首页 » 编程笔记 » 正文

java gbk 转utf8 编码问题

保证字节正确才是硬道理。当调用getBytes(“UTF-8″)转换成字节数组后,创建ISO-8859-1编码的字符串,ISO-8859-1编码是一个字节对应一个字符,因此不会使最后一个字节错误。

public static void correctEncode() throws UnsupportedEncodingException {
String gbk = “我来了”;
String iso = new String(gbk.getBytes(“UTF-8″),”ISO-8859-1″);
for (byte b : iso.getBytes(“ISO-8859-1″)) {
System.out.print(b + ” “);
}
System.out.println();

//模拟UTF-8编码的网站显示
System.out.println(new String(iso.getBytes(“ISO-8859-1″),”UTF-8″));
}

但是对于一些http 请求, 需要在request 阶段就设置编码,否则请求回来的数据就是缺失的,在调用上述的转换方法也是无效的

例如对方接口是gbk的:

Request req = new Request();

req.setEncoding(“GBK”);

;;;

HttpResult r = HttpUtils.request(req);