String s ="一";
int v=s.charAt(0);
byte[] b=s.getBytes();
System.out.println(b[0]);
System.out.println(b[1]);
System.out.println(v);
打印结果:
b[0]=-=46
b[1]=-69
v=19968
也就是说这个一字占用两个字节,数值分别是D2BB,但使用了charAt函数就变成了4E00。这是为什么呢?
java为什么要这么处理,我看了charAt这个函数:
public char charAt(int index) {
if ((index < 0) || (index >= count)) {
throw new StringIndexOutOfBoundsException(index);
}
return value[index + offset];
}
它加的这个偏移量是多少呢?
这是一种什么编码方式,请教大家
int v=s.charAt(0);
byte[] b=s.getBytes();
System.out.println(b[0]);
System.out.println(b[1]);
System.out.println(v);
打印结果:
b[0]=-=46
b[1]=-69
v=19968
也就是说这个一字占用两个字节,数值分别是D2BB,但使用了charAt函数就变成了4E00。这是为什么呢?
java为什么要这么处理,我看了charAt这个函数:
public char charAt(int index) {
if ((index < 0) || (index >= count)) {
throw new StringIndexOutOfBoundsException(index);
}
return value[index + offset];
}
它加的这个偏移量是多少呢?
这是一种什么编码方式,请教大家
打出来的是汉字的UNICODE,而: byte[] b=s.getBytes();
在WINOWS平台是转换成了GBK了,打出来的b[0]与b[1]是GBK的编码
若在LINUX,则:
byte[] b=s.getBytes(); 转换成了UTF-8编码了
byte
char byte和char的关系,他们之间转化和字符集[编码表]的关系java内码是unicode,也就是在jvm的表达的世界中,
涉及到文字描述信息(String[char的数组],char)都是以unicode编码字节流存放于内存中.s.getBytes() 这个方法需要制定获取字节流的字符集 ,
getBytes(StringcharSet),
如果你没制定,你想想会出现什么情况? 这个问题留给你吧.授人予渔 >> 授人予鱼
打出来的是汉字的UNICODE,而: byte[] b=s.getBytes();
在WINOWS平台是转换成了GBK了,打出来的b[0]与b[1]是GBK的编码
若在LINUX,则:
byte[] b=s.getBytes(); 转换成了UTF-8编码了