/**
* Function:
*
* @version 1.0
* Date: 2016/7/5
* Time: 16:52
* @author: XJ
*/
public class CharsetTest {
/**
* 不同的编码获取的字节数组是不同的
* @throws UnsupportedEncodingException
*/
@Test
public void DifferentEncode() throws UnsupportedEncodingException {
byte[] b1 = "你好 案发时发生发的是分散:;的说方面的撒发生 。的说法。;‘‘bi".getBytes("utf-8");
System.out.println(Arrays.toString(b1));
String utf = new String(b1, 0, b1.length, "utf-8");
System.out.println(utf);
byte[] b2 = "你好 案发时发生发的是分散:;的说方面的撒发生 。的说法。;‘‘bi".getBytes("iso8859-1");
System.out.println(Arrays.toString(b2));
String iso = new String(b2, 0, b2.length, "iso8859-1");
System.out.println(iso);
byte[] b3 = "你好 案发时发生发的是分散:;的说方面的撒发生 。的说法。;‘‘bi".getBytes("GBK");
System.out.println(Arrays.toString(b3));
String gbk = new String(b3, 0, b3.length, "GBK");
System.out.println(gbk);
}
/**
* 利用 iso8859-1 作为中间编码 防止乱码
* 注意:如果直接将utf-8的编码用GBK解析的话可能导致生成的byte[]与之前的byte[]不同,从而导致最后转为utf-8的时候出现乱码
* @throws UnsupportedEncodingException
*/
@Test
public void UserISOAsMiddleware() throws UnsupportedEncodingException {
byte[] b1 = "你好 案发时发生发的是分散:;的说方面的撒发生 。的说法。;‘‘bi".getBytes("utf-8");
System.out.println(Arrays.toString(b1));
// byte[] b2 = new String(b1, 0, b1.length, "GBK").getBytes("GBK");
// System.out.println(Arrays.toString(b2));
// System.out.println(new String(b2, 0, b2.length, "GBK"));
byte[] b2 = new String(b1, 0, b1.length, "iso8859-1").getBytes("iso8859-1");
System.out.println(Arrays.toString(b2));
System.out.println(new String(b2, 0, b2.length, "iso8859-1"));
byte[] b3 = new String(b2, 0, b2.length, "utf-8").getBytes("utf-8");
System.out.println(Arrays.toString(b3));
System.out.println(new String(b3, 0, b3.length, "utf-8"));
}
}
编码问题
最新推荐文章于 2024-01-12 17:12:41 发布