在Java项目开发中,经常遇到乱码问题,特别是中文乱码,这是由于编码问题。
1.当你的字节序列是某种编码时,这个时候想把字节序列变成字符串,也需要用这种编码方式,否则会出现乱码;
2.文本文件就是字节序列,可以是任意编码的字节序列,如果我们在中文机器上直接创建文本文件,那么该文本文件只认识ansi编码。
现在总结一下常见编码方式,见下表。另外,UTF-16LE(Little Endian)的中英文字节数和UTF-16BE(Big Endian)一样,只不过字节排列顺序不一样,即小端法和大端法,ISO-8859-1和US-ASCII一样,用1字节来编码英文字符。
编码方式 | 一个汉字占用字节数 | 一个英文占用字节数 |
GBK | 2个字节 | 1个字节 |
UTF-8 | 3个字节 | 1个字节 |
UTF-16 | 3个字节 | 2个字节 |
UTF-16BE(Java的编码方式) | 2个字节 | 2个字节 |
US-ASCII | 不能编码 | 1个字节 |