【问题标题】:UTF-8 issue inspite of URIEncoding="UTF-8"尽管 URIEncoding="UTF-8" 出现 UTF-8 问题
【发布时间】:2013-10-31 18:38:21
【问题描述】:

您好,我正在尝试使我正在开发的应用程序之一与 UTF-8 兼容。 我的环境如下:linux os,apahce web server作为http监听器,tomcat作为servlet引擎

apache 配置了 mod_jk,tomcat 使用 ajp 连接器。

我已经从几个站点阅读了 UTF-8 的基本指南,并根据我尝试了以下建议的建议

在 server.xml 中为连接器设置 URIEncoding="UTF-8"useBodyEncodingForURI =true

使用LANG =en_US.UTF8在 bashrc/.profile 中设置语言

配置apache服务器默认使用utf-8编码 即在

中指定 utf-8 作为默认字符集
AddDefaultCharset utf-8

在启动 tomcat 时将 utf-8 设置为 java args。使用

JAVA_OPTS="-Djavax.servlet.request.encoding=UTF-8 -Dfile.encoding=UTF-8"

我还验证了我的网页有正确的元标记配置为

<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">

尽管如此,我还是难以阅读 UTF-8 字符。知道我哪里出错了吗?

一个有趣的观察是,我只在使用 internet exporer 和 chorme 时遇到困难。 当我使用火狐将 utf-8 字符发送到我的服务器时,我能够正确读取它们。但是,IE 和 chorme 的字符越来越混乱。知道问题出在哪里吗?

我无法在 chrome 和 Fire fox 之间发现的唯一变化是 contentType 标头中的变化。

firefox请求的请求头如下

Content-Type: application/x-www-form-urlencoded; charset=utf-8 

对于 chrome(以及可能的 IE,我没有检查)在哪里

Content-Type: application/x-www-form-urlencoded 

知道这里出了什么问题吗?

【问题讨论】:

    标签: apache tomcat encoding utf-8


    【解决方案1】:

    Allrite,终于找到了问题所在。 下面的链接和底部报告的错误列表对于了解正在发生的马戏团非常有用:

    http://wiki.apache.org/tomcat/FAQ/CharacterEncoding

    基本上我的过滤器之一是试图读取请求参数,而需要做的就是 要求。 setCharacterEncoding(desiredEncoding) 在读取查询参数之前。

    所以,我尝试添加设置字符编码的 SetCharacterEncodingFilter,显然这也不起作用,因为该过滤器在 tomcat 7(但不确定)中可用,而我在 tomcat6.0.x 上。

    所以必须编写我自己的过滤器来正确设置 charEncoding。

    有了这个,现在我可以摆脱所有这些托管角色了。从昨天晚上开始,他们就太烦我了..

    【讨论】:

    • 请记住连接器中的 URIEncoding="UTF-8" 似乎只处理 GET 请求而不是帖子..
    猜你喜欢
    • 1970-01-01
    • 2011-01-11
    • 1970-01-01
    • 2011-11-30
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多