首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > JAVA > J2SE开发 >

关于Java从byte[]到String的字符转码有关问题

2012-02-08 
关于Java从byte[]到String的字符转码问题我刚才写程序遇到一个问题,可能很菜,希望能得到指点:我在写一个文

关于Java从byte[]到String的字符转码问题
我刚才写程序遇到一个问题,可能很菜,希望能得到指点:

我在写一个文本转码程序。中文转码都没有问题,但是遇到空格的时候却输出错误了,就是在输出空格的时候。下面举个例子:

byte[] b=new byte[1];
b[0]=0x20;//空格
String str=new String(b, "UTF-16");
System.out.println(str);

控制台输出却输出了个“口”字。
把这个字符串写到文件里发现写的数据是:EF BF BD
请问这是怎么回事?

[解决办法]
UTF-16是用4个字节保存多字节数据的,所以你只有一个字节,无法转成对应的多字节字符,估计剩余的3个字节会自动补长,得到一个乱码字符

Java code
byte[] b=new byte[1];b[0]=0x20;//空格String str=new String(b, "UTF-16");System.out.println(str);b = str.getBytes("UTF-16"); //重新获得字符串的字节System.out.println(b.length); //看看长度是否变了for (int i=0; i<b.length; i++) { //看看每个字节都是什么    System.out.printf("%04x\n", b[i]);} 

热点排行