当前位置: 代码迷 >> J2SE >> new String(s.getBytes("ISO-8859-1"),"GBK")正确吗,该如何解决
  详细解决方案

new String(s.getBytes("ISO-8859-1"),"GBK")正确吗,该如何解决

热度:517   发布时间:2016-04-24 12:49:01.0
new String(s.getBytes("ISO-8859-1"),"GBK")正确吗
结果中文字符全部变成?(ascii编码为63).
原因是iso-8859-1把“每个2Byte的Unicode字符”看成一个字符,中文无法识别。
为什么有人要这么用?

------解决方案--------------------
没问题,就是将ISO-8859-1字符集的s变量内容转换为GBK字符集类型。这个只有在页面、后台处理程序、数据库3者之间字符集不一致的情况下使用。不是必须的
------解决方案--------------------
写的是正确的,如楼上所说
------解决方案--------------------
没有问题的

------解决方案--------------------
不会丢失的
实际开发中,你要保持编码方式一致就行了
------解决方案--------------------
utf-8能识别中文
------解决方案--------------------
探讨
定会丢失!

Java code
String s ="h中";
byte[] b = s.getBytes("ISO-8859-1");
System.out.println("ISO-8859-1: "+Arrays.toString(b));

输出:
ISO-8859-1: [104, 63]
一个2Byte的Unicode字符,变成了一个8byte的iso8859-1字符。
is08859-1无法识别中文,故变成‘?’
这就丢失了中文信息。

------解决方案--------------------
我也想知道,在超过ASCII范围时显示的那个'?',是真的把内容变成字符'?'了,还是只是这样显示而已,实际值没变?
------解决方案--------------------
ISO8859_1
------解决方案--------------------
探讨
没问题,就是将ISO-8859-1字符集的s变量内容转换为GBK字符集类型。这个只有在页面、后台处理程序、数据库3者之间字符集不一致的情况下使用。不是必须的
  相关解决方案