使用Java,Servlets,MySQL,Tomcat和Velocity,采取了以下步骤:
<html><head>
Charset
以上所有都不起作用。在完成以下代码之前:
private String getParameter(String key) {
String param = request.getParameter(key);
if (Util.isNotEmpty(param)) {
try {
return new String(param.getBytes("8859_1"), "utf-8");
} catch (UnsupportedEncodingException e) {
e.printStackTrace();
}
return param;
}
return null;
}
以上意味着request.setCharacterEncoding
没有效果(getCharacterEncoding()
确实返回UTF-8);知道请求包装器包装在ThreadLocal
对象中。
这是如何引起的?如何解决?
答案 0 :(得分:0)
要正确解释参数,需要通过tomcat将URL解析为UTF-8。在server.xml连接器属性中设置它,例如用:
<Connector port="8080"
maxThreads="150" minSpareThreads="25" maxSpareThreads="75"
enableLookups="false" redirectPort="8443" acceptCount="100"
debug="0" connectionTimeout="20000"
disableUploadTimeout="true"
URIEncoding="UTF-8"/>
答案 1 :(得分:0)
您将获得浏览器找到的编码中编码的参数。虽然,问题可能基于奇怪的浏览器配置或xml标头&lt;?xml version =“1.0”encoding =“iso8895_1”?&gt;如果这是曾经使用iso编码的XHTML,则可能需要它。