如何在Velocity上配置UTF-8?

时间:2011-10-18 10:37:41

标签: java servlets character-encoding velocity

使用Java,Servlets,MySQL,Tomcat和Velocity,采取了以下步骤:

  • velocity.properties:
    • input.encoding = UTF-8
    • output.encoding = UTF-8
  • 的server.xml
    • URIEncoding = UTF-8
  • <html><head> Charset
    • meta http-equiv =“Content-Type”content =“text / html; CHARSET = UTF-8”
  • eclipse属性,项目属性,文件和&amp;编辑器编码
    • 设置适用于UTF-8的所有内容
  • JDBC连接:
    • = db.url配置参数JDBC:MySQL的://:/?useEncoding =真安培;的characterEncoding = UTF-8
  • java / servlet代码:
    • request.setCharacterEncoding(UTF-8)

以上所有都不起作用。在完成以下代码之前:

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对象中。

这是如何引起的?如何解决?

2 个答案:

答案 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,则可能需要它。