当前位置: 首页 > 知识库问答 >
问题:

UTF-8问题,尽管URIEncoding=“UTF-8”

王旺
2023-03-14

嗨,我试图使我在UTF-8兼容的应用程序之一。我的环境如下:linux操作系统,apahce网络服务器作为超文本传输协议监听器,tomcat作为servlet引擎

配置了mod_jk和tomcat的apache s使用ajp连接器。

我已经从少数网站上阅读了UTF-8的基本指南,并根据建议尝试了以下方法

为服务器中的连接器设置URIEncoding=“UTF-8”useBodyEncodingForURI=true。xml

设置语言bashrc/. file使用LANG=en_US. UTF8

将apache服务器配置为默认使用utf-8编码,即指定utf-8作为默认字符集

AddDefaultCharset utf-8

启动tomcat时将utf-8设置为java参数。使用

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字符。知道我哪里出错了吗?

一个有趣的观察结果是,我只在互联网exporer和chorme上遇到了困难。当我使用fire fox向服务器发送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 

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

共有1个答案

毛淳
2023-03-14

爱丽特,终于解决了这个问题。下面的链接和底部报告的错误列表对于理解周围正在发生的马戏团非常有用:

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

基本上,我的一个过滤器试图读取请求参数,而另一个过滤器需要执行请求。在读取查询参数之前设置字符编码(desiredEncoding)。

所以,我尝试添加设置字符enconding的Set特征EncodingFilter,显然这也不起作用,因为这个过滤器在tomcat 7中可用(虽然不确定),我在tomcat6.0. x上。

因此,我必须编写自己的过滤器来正确设置字符编码。

有了这些,现在我可以把所有这些被管理的角色从我的脑海中抹去。从昨天晚上起他们就一直在烦我。。

 类似资料:
  • 我不能让UTF-8在Tomcat中工作。我已经完成了以下配置: 在我的server.xml上设置URIEncode="UTF-8" 导出CATALINA_OPTS=$CATALINA_OPTS-Dfile.encoding=UTF-8catalina.bat 配置Spring特性EncodingFilter 在所有html文件中设置UTF-8 Maven来源编码构建UTF-8 当我在浏览器或邮递员

  • 当我在http://grepcode.com/file/repo1.maven.org/maven2/org.apache.tomcat/tomcat-catalina/7.0.0/org/apache/catalina/connector/Request.java#Request.parseParameters()查看tomcat源代码时,我找不到从哪里为来自get方法的queryString设

  • 问题内容: 我一直使用ISO-8859-1编码,但是现在要转到UTF-8。 不幸的是我无法正常工作。 我的MySQL数据库是UTF-8,我的PHP文档是用UTF-8编码的,我设置了UTF-8字符集,但仍然无法使用。 (像æ/ø/å这样的特殊字符不起作用) 希望你们能提供帮助! 问题答案: 确保与数据库的连接也使用此字符集: 根据php.net 的文档: 另请参见:http : //nl3.php.

  • 问题内容: 我从网页上获取的JSON数组出现奇怪的字符编码问题。服务器正在发回此标头: 内容类型文字/ javascript;字符集= UTF-8 另外,我可以查看Firefox或任何浏览器中的JSON输出,并且Unicode字符正确显示。响应有时会包含来自其他语言的带有重音符号等的单词。但是,当我将其下拉并放在Java中的字符串中时,我得到了那些奇怪的问号。这是我的代码: 如您所见,我在Inpu

  • 问题内容: 我目前正在开发一个Android应用程序,该应用程序从提供JSON数据的API中获取其数据。我将JSON数据的项目存储为字符串,这导致出现一些奇怪的字符(例如’Â’)。我知道这与字符集有关,因此我将InputStreamReader设置为“ UTF-8”,但它似乎没有解决问题。 Log.d“行”给出 有任何想法吗? 问题答案: 尝试以下代码片段代码,当我遇到类似问题时该代码对我有帮助:

  • 问题内容: 我有一个具有UTF-8字符集的MySQL表,并尝试通过PHP表单插入该表时,数据库显示以下错误: PDOStatement :: execute():SQLSTATE [HY000]:常规错误:1366错误的字符串值:’\ xE8’为列… 有问题的字符是“cat”,但考虑到数据库和表设置为UTF-8,我不明白为什么这应该是一个问题。 编辑 我已经直接从mysql终端尝试过,并且遇到了同