1,.txt文件有多种编码格式,"GBK", "UTF-8", "Unicode", "UTF-16BE"等,文件在不同的编译器中会经常出现乱码问题,下面通过JAVA解析一个字符串来介绍一些JAVA中的文件编码,区分不同编码间的区别。
2,解析字符串“我爱JAVA”的代码如下:
<pre name="code" class="java"><span style="font-size:14px;">package cn.edu.io;
public class io{
public static void main(String[] args) throws Exception {
String s="我爱JAVA";
/*
* 转换成字节序列
* 不传参数时,用的是系统默认的编码方式
* 右击——Properties查看
* 用的是GBK
*/
byte[] by=s.getBytes();
//遍历字节序列的内容
for (byte b:by) {
//把字节转换成了int,并以十六进制显示,(b & 0xff)作用是去掉b的前24个0
System.out.print(Integer.toHexString(b & 0xff)+" ");
//从输出的结果可以发现,GBK编码中文占用两个字节,英文占用一个字节
}
System.out.println();
//也可以自定义编码方式
byte[] by2=s.getBytes("UTF-8");
for (byte b:by2) {
System.out.print(Integer.toHexString(b & 0xff)+" ");
//从输出的结果可以发现,UTF-8编码中文占用三个字节,英文占用一个字节
}
System.out.println();
//java是双字节编码,即UTF-16be
byte[] by3=s.getBytes("UTF-16be");
for (byte b:by3) {
System.out.print(Integer.toHexString(b & 0xff)+" ");
//从输出的结果可以发现,UTF-16be编码中文占用两个字节,英文占用两个字节
}
}
}
</span>
3,输出结果为:
ce d2 b0 ae 4a 41 56 41
e6 88 91 e7 88 b1 4a 41 56 41
62 11 72 31 0 4a 0 41 0 56 0 41
为了便于观察,用不同的颜色来把不同的字符区分开,同一种颜色表示一个字符