您的位置:首页 > 其它

编码问题

2016-07-05 19:42 232 查看
/**
* 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"));
}
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  编码