黑马程序员技术交流社区
标题:
编码表问题
[打印本页]
作者:
冯晓骏
时间:
2013-10-26 10:58
标题:
编码表问题
今天突然发现不管是GBK还是U8码表,字符串中的字符获取字节数组时都是1个字节表示的,但是如果获取char数组又可以是两个字节,有点糊涂,这里面是怎么encode和decode的,同样一个字符串,为什么获取字节数组就是1个字节表示一个字符,获取字符数组就是两个字节,是在查表反编译之后补了8个0转成了字符么?
System.out.println(Byte.SIZE);
System.out.println(Short.SIZE);
System.out.println(Integer.SIZE);
System.out.println(Long.SIZE);
System.out.println(Float.SIZE);
System.out.println(Double.SIZE);
System.out.println(Character.SIZE);
System.out.println("FF".getBytes("GBK").length);
System.out.println("李四".getBytes("GBK").length);
char[] arr = new char[2];
"ff".getChars(0,2,arr,0);
for(int i = 0 ; i < 2 ; i ++)
{
System.out.println(arr[i]);
}
byte[] buf = "ff".getBytes();
for(int i = 0 ; i < buf.length ; i ++)
{
System.out.println(buf[i]);
}
复制代码
作者:
麦子
时间:
2013-10-26 12:40
哥么你理解错了
java中一个字符占用两个字节,一个字符既可以存储一个字母,也可以存储一个汉字
为什么获取字节数组就是1个字节表示一个字符,获取字符数组就是两个字节,是在查表反编译之后补了8个0转成了字符么?
你获取字节数组时它是以1个字节为单位获取的,而你采用字符数组它则采用两个字节为单位获取的,这本来就没有问题啊,好好想想
好好学习哦,不懂可以问我
作者:
To
时间:
2013-10-27 16:09
楼主你好,如果问题已解决请将帖子状态修改为提问结束,
如果未解决请继续追问,谢谢合作
修改方法请看解释帖:
http://bbs.itheima.com/thread-89313-1-1.html
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/)
黑马程序员IT技术论坛 X3.2