用HttpURLConnection获取页面信息,返回乱码,费解
1、已经包装了InputStreamReader(inputStream, "gb2312")
2、右键检查页面编码格式gb2312,同时还试了utf-8、GBK,都返回乱码
3、同样的代码请求别的网页不乱码
何解?
用HttpURLConnection获取页面信息,返回乱码,费解
1、已经包装了InputStreamReader(inputStream, "gb2312")
2、右键检查页面编码格式gb2312,同时还试了utf-8、GBK,都返回乱码
3、同样的代码请求别的网页不乱码
何解?
以下回答参考 皆我百晓生、券券喵儿 等免费微信小程序相关内容作答,并由本人整理回复。
如果使用的是Java 7或者以上版本的Web应用,则可以尝试使用javax.servlet.http.HttpServletRequest#getCharacterEncoding()方法来获取字符编码。例如:
String characterEncoding = request.getCharacterEncoding();
if (characterEncoding != null && !characterEncoding.isEmpty()) {
try {
// 使用指定的字符编码读取输入流
return new InputStreamReader(inputStream, characterEncoding).readUTF();
} catch (UnsupportedEncodingException e) {
throw new RuntimeException(e);
}
}
这个方法会首先尝试从request中获取字符编码,默认情况下是"ISO-8859-1"。如果请求中没有提供字符编码,则会自动设置为"ISO-8859-1"。
然后,它会尝试使用指定的字符编码读取输入流,并将结果转换为UTF-8字符串。如果遇到任何错误(比如编码不存在或不可支持),则会抛出一个异常。
请注意,如果你使用的是Java 6,你可能需要使用更复杂的解决方案,例如在HTTP请求中传递字符编码,或者使用其他的库和框架(如Apache HttpClient)来处理网络请求。