GBK转成ISO8859_1,再转回GBK没有问题,但是为什么GBK转成UTF-8,再转回GBK就是乱码了?!

wd8_6532 2006-09-23 01:18:40
String str="中国";
String str1=new String(str.getBytes("GBK"),"ISO8859_1");
String str2=new String(str1.getBytes("ISO8859_1"),"GBK");
System.out.println("Received2: " + str2); // 这儿能输出中国

String str="中国";
String str1=new String(str.getBytes("GBK"),"UTF-8");
String str2=new String(str1.getBytes("UTF-8"),"GBK");
System.out.println("Received2: " + str2);// 这儿输出乱码

晕!
...全文
343 3 打赏 收藏 转发到动态 举报
写回复
用AI写文章
3 条回复
切换为时间正序
请发表友善的回复…
发表回复
wd8_6532 2006-09-23
  • 打赏
  • 举报
回复
因为ISO8859_1是一种很特殊的编码,每一个字节在这种编码上都有对应的字符,因此任意编码都可以转成这个再变回原来的编码
但是其他大部分编码都不具备这种性质,因此这种过程总的来说是不可逆的
ps:ISO8859_1(又叫latin1)的这种性质经常用来做在不支持某一编码的平台上进行存储信息
======================
太精辟了。
圣殿骑士18 2006-09-23
  • 打赏
  • 举报
回复
学习
ykzhujiang 2006-09-23
  • 打赏
  • 举报
回复
因为ISO8859_1是一种很特殊的编码,每一个字节在这种编码上都有对应的字符,因此任意编码都可以转成这个再变回原来的编码
但是其他大部分编码都不具备这种性质,因此这种过程总的来说是不可逆的
ps:ISO8859_1(又叫latin1)的这种性质经常用来做在不支持某一编码的平台上进行存储信息

62,614

社区成员

发帖
与我相关
我的任务
社区描述
Java 2 Standard Edition
社区管理员
  • Java SE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧