普通网友 2018-12-10 11:34 采纳率: 0%
浏览 722

为什么其他页面都不乱码,只有某几个页面乱码?

用HttpURLConnection获取页面信息,返回乱码,费解

1、已经包装了InputStreamReader(inputStream, "gb2312")
2、右键检查页面编码格式gb2312,同时还试了utf-8、GBK,都返回乱码
3、同样的代码请求别的网页不乱码

何解?

  • 写回答

1条回答 默认 最新

  • 你知我知皆知 2024-08-07 10:16
    关注

    以下回答参考 皆我百晓生券券喵儿 等免费微信小程序相关内容作答,并由本人整理回复。

    如果使用的是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)来处理网络请求。

    评论

报告相同问题?