码迷,mamicode.com
首页 > 其他好文 > 详细

汉字字符编码与转码详解,iso-8859-1的妙用

时间:2015-05-21 19:22:40      阅读:262      评论:0      收藏:0      [点我收藏+]

标签:

程序中有汉字参数,经常会遇到编码转码问题,总结下: 
1.汉字为多字节字符,须多字节编码解码,如"测试".getBytes("gb2312"); 

这样"测试".getBytes("gb2312")就变成一个byte数组,这时候你可以随意重新指定编码如iso-8859-1, 
String s1=new String("测试".getBytes("gb2312"),"iso-8859-1"); 

编为s1,这是s1就变成一个是iso-8859-1编码的字符串,如果你想重新转为中文,那么,你用什么字符集编码的,必须用什么字符集来解 码,这里是iso-8859-1,可以这么来做 

String s2 = new String(s1.getBytes("ISO-8859-1"),"gb2312"); 


这样s2又重新变回中文了,所以当你打印s2时,就是“测试”。 


2.用iso-8859-1做中间编码,原因: 

[1]iso-8859-1是单字节字符编码, 

[2]ANSI 编码 (如:GB2312, BIG5,Shift_JIS,ISO-8859-2等等),是多字节编码(英文单字节,中文多字节); 

[3]UNICODE 编码(UTF-8, UTF-7, UTF-16, UnicodeLittle, UnicodeBig....),是宽字节编码(所有字符均是多字节) 

因此用iso-8859-1做中间码,会保持原有字节的秩序,不发生混乱;可以理解为其他的编码对iso-8859-1兼容吧。 

因此,我们常常使用 bytes = string.getBytes("iso-8859-1") 坐中间码来进行逆向操作,得到原始的“字节串”。然后再使用正确的ANSI 编码,比如 string = new String(bytes, "GB2312"),来得到正确的“UNICODE 字符串”。 

不信的话可以试试,utf8和gb不能互相转换,只有iso-8859-1做中间码可以完美互相转码!!!

汉字字符编码与转码详解,iso-8859-1的妙用

标签:

原文地址:http://www.cnblogs.com/tonyliult/p/4520475.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!