大家好,又见面了,我是你们的朋友全栈君。
编码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
性命生命使?
性命生命使命
???????????
发布者:全栈程序员-用户IM,转载请注明出处:https://javaforall.cn/138745.html原文链接:https://javaforall.cn
【正版授权,激活自己账号】: Jetbrains全家桶Ide使用,1年售后保障,每天仅需1毛
【官方授权 正版激活】: 官方授权 正版激活 支持Jetbrains家族下所有IDE 使用个人JB账号...