比方:
String str = "王老五";
String teststr = new String(str.getBytes("GB2312"), "UTF-8");
String recover = new String(teststr.getBytes("UTF-8"), "GB2312");按道理讲recover的内容应该会恢复成str的内容一样吧,但是显示出来recover还是乱码,这是为什么呢?我怎样才能从teststr转换出原来的str呢?谢谢!
String str = "王老五";
String teststr = new String(str.getBytes("GB2312"), "UTF-8");
String recover = new String(teststr.getBytes("UTF-8"), "GB2312");按道理讲recover的内容应该会恢复成str的内容一样吧,但是显示出来recover还是乱码,这是为什么呢?我怎样才能从teststr转换出原来的str呢?谢谢!
解决方案 »
- 希望此贴能彻底结束JAVA参数传递的问题
- JButton的图标问题
- 想达到这样初始化Date(2006,7,24)的效果,有什么简便的方法吗?
- 谁有最短路径的算法(Dijsktra算法)
- jdk 1.4.2 怎样该外观呀?
- 到达一个iterator的末尾,如何回到开始再次使用next进行循环
- 这么一个问题,居然没人能完整的回答我?唉!
- 滚动条和边框的题目,请帮忙看看,出不了结果来。
- 高分火速求解,请在线朋友回答:java自定义类怎样生成实例数组?( className[] N=new className[X];怎么不行?)
- java中动态链接库
- swing可以可视化的操作word吗?
- 面试题,求高手支招...急
也没有人把GB2312编码的数据当UTF8来解码。GB2312转String(UNICODE)是要对照符号表的
UTF8编码也是有特定的编码规则。
解码时,对于不符合UTF8编码规则的编码,或GB2312<==>UNICODE符号表中不存在的编码,
就会丢失数据或出错。
String recover = new String(teststr.getBytes("UTF-8"), "GB2312");////////////////////////////
看来没有正确理解编码
String teststr = new String(str.getBytes("GB2312"), "ISO-8859-1");
String recover = new String(teststr.getBytes("ISO-8859-1"), "GB2312");这样才可以 ISO-8859-1 不会丢失信息
我自己再想想办法算了……
http://www.regexlab.com/zh/encoding.htm