首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >GET请求参数的字符编码

GET请求参数的字符编码
EN

Stack Overflow用户
提问于 2013-09-04 22:14:26
回答 2查看 7.9K关注 0票数 1

你好,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
  /*

我真的不知道还可以尝试什么,或者去哪里看。如果有人能为我指引正确的方向,我将不胜感激。

EN

回答 2

Stack Overflow用户

发布于 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。

有一些用来设置编码的螺丝,比如

,但由于信息有限,我不能说到哪里去找。也许这些信息就足够了。

票数 0
EN

Stack Overflow用户

发布于 2013-09-04 22:40:30

在7+几年后关闭它。很抱歉,当它被解决的时候,我没有做到这一点。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/18616256

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档