gpt4 book ai didi

java - 如果没有指定,我应该为 HTTP servlet 输入流使用什么编码?

转载 作者:行者123 更新时间:2023-11-29 04:51:26 25 4
gpt4 key购买 nike

在读取 ServletInputStream 时,我的团队正在做这样的事情:

br = new BufferedReader(new InputStreamReader(servletInputStream));

这不出所料地在我的代码分析器上发出了危险信号,因为未指定编码,因此它将依赖于默认系统编码。

第一步是尝试从请求中获取编码:

String encoding = request.getCharacterEncoding();
if (encoding != null) {
br = new BufferedReader(new InputStreamReader(servletInputStream), encoding);
}

然而,作为this related answer告诉我,大多数浏览器不发送编码,这将导致上面的 encoding 为空。在那种情况下,我究竟应该如何知道编码是什么?

浏览器不发送编码是因为:

  1. HTTP 请求有一个普遍认可的默认编码,如果没有指定则使用该默认编码? (如果是的话,它是什么,应该始终使用定义它的标准在哪里),或者,
  2. 还有其他方法可以确定编码是什么吗? (如果是这样,它是什么?当然不仅仅是尝试不同的编码并查看您是否得到垃圾或可解析的东西?)

最佳答案

由于它是一个动态 Web 应用程序,因此您应该对客户端发送请求的编码有一定的控制权。通常是 UTF-8。

关于java - 如果没有指定,我应该为 HTTP servlet 输入流使用什么编码?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35276824/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com