我有Tomcat 8.5.6的默认安装。似乎UTF-8编码的请求没有被正确解释,即使文档说默认(如果不是严格模式)这些天应该是UTF-8。我的java POST请求看起来像:
HttpPost post = new HttpPost(url);
post.setEntity(new UrlEncodedFormEntity(nameValuePairs, HTTP.UTF_8));
...
测试,我看到在我的servlet处理程序中没有正确解码波形符号:
public class MyServlet extends HttpServlet {
protected void doPost(HttpServletRequest request, ...) {
String tildeTest = request.getParam("foo"); // no good.
}
}
如果我在访问之前在请求上明确设置了编码,则会正确解码:
protected void doPost(HttpServletRequest request, ...) {
request.setCharacterEncoding("UTF-8");
String tildeTest = request.getParam("foo"); // works!
...
}
所以我不确定是否:
Tomcat 8.5.6到处都没有真正使用UTF-8,我需要在配置文件中手动设置它。
我的http请求缺少一些告诉Tomcat使用哪种编码的标头 - 也许http帖子默认为Tomcat刚刚尊重的其他编码。
有谁知道哪一个?
由于
答案 0 :(得分:0)
https://wiki.apache.org/tomcat/FAQ/CharacterEncoding
POST请求应指定参数和值的编码 他们发送。由于许多客户端无法设置显式编码,因此 使用默认值(ISO-8859-1)。
<强> What can you recommend to just make everything work? (How to use UTF-8 everywhere). 强>
列出了6种方法来确保这一点,因为servlet请求1,2应该是相关的