【问题标题】:How to configure UTF-8 on Velocity?如何在 Velocity 上配置 UTF-8?
【发布时间】:2011-12-09 23:49:45
【问题描述】:

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

  • 速度.属性:
    • input.encoding=UTF-8
    • output.encoding=UTF-8
  • server.xml
    • URIEncoding = UTF-8
  • <html><head> 字符集
    • meta http-equiv="Content-Type" content="text/html;CHARSET=UTF-8"
  • eclipse 属性、项目属性、文件和编辑器编码
    • 设置所有适用于 UTF-8
  • JDBC 连接:
    • db.url=jdbc:mysql://:/?useEncoding=true&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 对象中。

这是怎么引起的,我该如何解决?

【问题讨论】:

  • 症状表明您(或 Velocity)没有在 HTTP 响应 Content-Type 标头中设置 charset 属性。请注意,当通过 HTTP 提供页面时,<meta> 标记将被忽略。相反,将使用 HTTP 响应 Content-Type 标头的 charset 属性(如果有)。 <meta> 标签仅在用户将网页保存到其本地磁盘并稍后通过file:/// 从磁盘上查看时使用。您的问题可能需要在 Velocity 方面得到解决。
  • 好的,所以我扩展 VelocityLayoutServlet 只是为了设置响应字符编码,并打印标题以获得“Content-Type:text/html;charset=UTF-8”。正如我在原始帖子中提到的(在管理员编辑之前),这个问题是从客户端到服务器而不是其他方式发生的,即在保存表单数据时,因此,上面定义的函数的积极作用。谢谢

标签: java servlets character-encoding velocity


【解决方案1】:

要正确解释参数,URL 需要被 tomcat 解析为 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"/>

【讨论】:

    【解决方案2】:

    您将获得以浏览器认为 OK 的编码编码的参数。不过,问题可能是基于奇怪的浏览器配置或 xml 标头 如果这曾经是带有 iso 编码的 XHTML,则可能需要。

    【讨论】:

      猜你喜欢
      • 2011-08-28
      • 1970-01-01
      • 1970-01-01
      • 2017-06-20
      • 1970-01-01
      • 1970-01-01
      • 2015-07-26
      • 2023-03-19
      • 1970-01-01
      相关资源
      最近更新 更多