你好,Stackoverflowers的伙伴。
我有个问题需要帮助:
我们正在进行从智能手机应用程序到Java/Spring MVC应用程序的http GET web服务调用。我们在Tomcat应用程序服务器上,该应用程序服务器的前端是一台Apache服务器,该服务器带有一个模块
_
代理代理设置。
URL中嵌入的参数之一是单词"Männen",这是其中一个参数所在的组织名称。应用程序发出一个Jquery Ajax GET请求,参数离开应用程序为"M%E4nnen",据我理解,这意味着"ä“已经被正确的URL编码。当它到达Spring控制器时,它被扭曲为“M?nnen”。
我已经在谷歌上找到了相当多的关于这方面的帖子,他们都建议修改Tomcat的server.xml文件,给所有的连接器添加URIEncoding="UTF-8“。当然,我试过了。它进行了更改,但没有解决问题。这个字符串现在变成了“Mí²nnen”。还有一个线程建议您在Apache proxy配置中将"nocanon“添加到ProxyPass参数中。这是尝试过的,但没有什么不同。
使用日志,我可以遵循请求:
在Apache访问日志中,该参数记录为"M%E4nnen“
在Apache代理日志中,该参数记录为"M%E4nnen“
在Tomcat本地主机中
_
访问日志,参数记录为"M%E4nnen“
在接收该请求的Spring控制器中,该参数被记录为“M?²nnen”
我的Spring应用程序也有一个字符编码过滤器,但据我所知,它只在请求体上工作。配置如下:
CharacterEncodingFilter
org.springframework.web.filter.CharacterEncodingFilter
encoding
UTF-8
forceEncoding
true
CharacterEncodingFilter
/*
我真的不知道还可以尝试什么,或者去哪里看。如果有人能为我指引正确的方向,我将不胜感激。
发布于 2013-09-04 22:40:30
如果HTML是Windows-1252 (或“子集”ISO-8859-1),那么%E4就可以了。但是,如果HTML是Unicode、UTF-8,则不是。
String auml = "\u00e4";
String aumlPerc = URLEncoder(auml, "UTF-8");
URLDecoder.decode(aumlPerc, "UTF-8");
除了具有字符集UTF-8的HTML页面之外,您还可以使用
..。
页面似乎错误地发送了%E4,被接受为ISO-8859-1 (默认值),转换为多字节UTF-8序列,但随后被错误地认为是ISO-8859-1。
有一些用来设置编码的螺丝,比如
,但由于信息有限,我不能说到哪里去找。也许这些信息就足够了。
发布于 2013-09-04 22:40:30
在7+几年后关闭它。很抱歉,当它被解决的时候,我没有做到这一点。
https://stackoverflow.com/questions/18616256
复制相似问题