编码解码乱码字符集[通俗易懂]

编码解码乱码字符集[通俗易懂]编码EnCode:将字符转化为字节解码DeCode:将字节转化为字符乱码:打个比方—比较多人知道的联通用字符集GBK的时候出现这样的情况:��ͨ,这就是乱码常见的中文字符集有:GBK和UTF-8国际上常用的字符集:Unicode(大字典)、ANSI UTF-8,中文占三个字节,英文占一个字节(变长),还有定长占两个字节(耗费空间多)GBK,中文占两个zijie…

大家好,又见面了,我是你们的朋友全栈君。

编码EnCode:将字符转化为字节

解码DeCode:将字节转化为字符

乱码:打个比方—比较多人知道的联通 用字符集GBK的时候出现这样的情况:��ͨ,这就是乱码

常见的中文字符集有:GBK 和 UTF-8

国际上常用的字符集:Unicode(大字典)、ANSI

 

UTF-8,中文占三个字节,英文占一个字节(变长),还有定长占两个字节(耗费空间多)

GBK,中文占两个zijie

 

下面模拟编码:

我的默认的编码字符集为:

编码解码乱码字符集[通俗易懂]

import java.io.UnsupportedEncodingException;

/**
 * 编码:将字符转化为字节
 * @author Administrator
 *
 */
public class MyEnCode {
	public static void main(String[] args) throws UnsupportedEncodingException {
		String msg = "性命生命使命a";
		
		//默认字符集编码,这里默认为GBK
		byte[] datas = msg.getBytes();
		System.out.println(datas.length);
		
		//使用不同字符集编码,如UTF-8
		datas = msg.getBytes("UTF-8");
		System.out.println(datas.length);
	}
}

 结果显示:

13
19

说明:不同的字符集得到的字节数是不一样的

 

下面模拟解码的情况:

import java.io.UnsupportedEncodingException;

/**
 * 编码:将字符转化为字节
 * 解码:将字节转化为字符
 * @author Administrator
 *
 */
public class MyDeCode {
	public static void main(String[] args) throws UnsupportedEncodingException {
		String msg = "性命生命使命a";
		//编码
		byte[] datas = msg.getBytes();
		
		//解码
		msg = new String(datas,0,datas.length,"GBK");
		System.out.println(msg);
		
		//乱码:
		//(1)字节数不够
		msg = new String(datas,0,datas.length-2,"GBK");
		System.out.println(msg);
		
		msg = new String(datas,0,datas.length-1,"GBK");
		System.out.println(msg);
		
		//(2)没有使用和默认一样的字符集
		msg = new String(datas,0,datas.length-1,"UTF-8");
		System.out.println(msg);
	}
}

 结果:

性命生命使命a
性命生命使?
性命生命使命
???????????

 

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/138745.html原文链接:https://javaforall.net

(0)
上一篇 2022年5月30日 下午9:46
下一篇 2022年5月30日 下午10:00


相关推荐

  • dota2已连接协调服务器,正在登陆中的解决办法「建议收藏」

    dota2已连接协调服务器,正在登陆中的解决办法「建议收藏」这两天,家里有亲戚过世,暗恋的小姑娘跟别人出去玩了,心情不好,打开dota2,连了好几次都没连上,按网上的说法清除缓存,重启电脑都试过了,不行,后来发现,我是手机开的热点,这里信号不好,换一个信号好的卡就行了,很多关于网络的问题其实都和网速有关,因为网速不合格和断网基本上是同一个问题,所以一般会引起混淆。…

    2022年5月17日
    143
  • 批处理创建文件夹

    批处理创建文件夹原文 批处理创建文件夹 echooff 关闭回显 setdate 1 设置一个变量传参数 ifnotexist date md date else rd s Q date amp amp md date cd date 如果文件夹不存在则创建 如果存在则删除掉并重建 rd 是删除目录 Q 就

    2026年3月18日
    2
  • 关于java的JIT知识

    关于java的JIT知识

    2021年11月29日
    40
  • 程序员如何用好 Cursor 工具?

    程序员如何用好 Cursor 工具?

    2026年3月12日
    2
  • windows本地用户及组的区别「建议收藏」

    windows本地用户及组的区别「建议收藏」Administrators(超级管理员组)用来管理注册用户或者具有一定权限的其他管理员,维护网站的运行。Administrators中的用户对计算机/域有不受限制的完全访问权,分配给该组的默认权

    2022年8月3日
    11
  • 关于&0x80

    关于&0x80一些关于 windows 相关的书 书中提到扫描码的概念 扫描码的最低 7 为 0 6 位 是描述码值 而最高位 7 位 就描述该键是否被按下了 所以要想知道该键是否被按下就必须与 0x80 相与 例如 GetKeyState VK UP amp 0x80 或 KeyStateBuff DIK ESCAPE amp 0x80 同时 在 ANSIC 标准中

    2026年3月17日
    2

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号