示例:
@Test
public void test1() throws UnsupportedEncodingException {
String url = getUrl();
HttpRequest request = HttpUtil.createGet(url);
HttpResponse execute = request.execute();
byte[] bytes = execute.bodyBytes();
System.out.println("起始byte[]大小" + bytes.length);
String str = new String(bytes, "utf-8");
System.out.println("结束byte[]大小"+str.getBytes("utf-8").length);
}
执行结果:
使用的编码集是utf-8
.
.
.
问题的解决
原因是默认是用UTF-8编码来生成String的,用System.getProperty(“sun.jnu.encoding”)可以得到当前默认编码是UTF-8。UTF-8是可变长度的编码,原来的字节数组就被改变了。在new String使用其他编码如GBK,GB2312的话一样也会导致字节数组发生变化,因此要想获取String里单字节数组,就应该使用iso8859-1编码。
ISO8859-1通常叫做Latin-1,Latin-1包括了书写所有西方欧洲语言不可缺少的附加字符,其中 0~127的字符与ASCII码相同,它是单字节的编码方式,这样生成的String里的字节数组就跟原来的字节数组一样。
.
编码改成 ISO8859-1
与原byte[]就一致了