String asd = "asd";
byte[] b = asd.getBytes();byte[] gb = asd.getBytes("GBK");
byte[] iso = asd.getBytes("iso-8859-1");
byte[] b = asd.getBytes();你应该使用 中文夹杂E文 试试!!
你就会发现不同的了!
一般, getBytes() asd.getBytes("iso-8859-1"); 返回总是一样的!!
getBytes("GBK") 不一样的!!
byte[] b = asd.getBytes();byte[] gb = asd.getBytes("GBK");
byte[] iso = asd.getBytes("iso-8859-1");
byte[] b = asd.getBytes();你应该使用 中文夹杂E文 试试!!
你就会发现不同的了!
一般, getBytes() asd.getBytes("iso-8859-1"); 返回总是一样的!!
getBytes("GBK") 不一样的!!
他跟 GB2312 有什么区别?
new String(s.getBytes("gb2312"),"ISO8859_1");ISO8859_1 是编码标识..而s.getBytes("gb2312")是返回的一个共用的字符标识!整行..能被辨认就行!byte本来就是8位的。!! 而生成创建string的时候,就按IS08859_1编码来创建..
比如("\u0061\u0073\u0064").getBytes("GBK");他会更返回的int值得去GBK对应的编码表里去找字符。
当转化的时候目标代码不存在。。于是就产生了乱码。
他跟 GB2312 有什么区别呢?
本人认同hesi726(hesi)的操作,字符串到字符数组应该没有改编码的。
应该用了new String(s.getBytes("gb2312"),"ISO8859_1");
转换后会出现相应的变化。
中秋快乐
byte是八位的一个字符应该由两个字节表示
asd.getBytes();应该返回六个字节才对
006100730064
实际上是617364byte[] gb = asd.getBytes("GBK");
byte[] iso = asd.getBytes("iso-8859-1");
如果有中文的话 可定是不一样的 这个我知道比如("\u0061\u0073\u0064").getBytes("GBK");他会更返回的int值得去GBK对应的编码表里去找字符。
当转化的时候目标代码不存在。。于是就产生了乱码。这句话说得有道理 不过好像不是 他会更返回的int值得去GBK对应的编码表里去找字符。
是不是这样 他会更返回的int值得去GBK对应的编码表里去找对应的byte。感觉有些牵强
public static void main(String[] args){
String asd = "asd";
byte[] b = asd.getBytes();
//byte[] iso = asd.getBytes("iso-8859-1");
System.out.println(b);
}
}结果是
[B@1858610
不明白,呵呵,中秋快乐
(0 0)
+-----oOO----(_)------------+
| |
| 谢谢|谢谢 |
| |
+------------------oOO------+
|__|__|
|| ||
ooO Ooo
可能正好和“gbk”的一样,
java使用的是unicode是十六位的
byte是八位的