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

在JSP中中断的UTF-8 URI编码

杨柏
2023-03-14

该项目使用JSP、Servlets、Jquery、Tomcat6。

JSPs中的Charset设置为UTF-8,所有Tomcat连接器都使用uriencoding=UTF-8,我还使用了一个字符编码过滤器,如下所述。另外,我在meta标记中设置了contentType,我的浏览器会正确地检测到它。

在使用Jquery的Ajax调用中,我使用encodeURIComponent()作为URL参数,然后用$.param()序列化整个参数集。在调用的servlet中,这些参数用java.net.urldecoder.decode(术语,“UTF-8”)正确解码。

<a href="/myWebapp/servletPath?term=%C3%BCberfall">Click here</a>
<a href="/myWebapp/servletPath?term=%FCberfall">Click here</a>
$.param({term : encodeURIComponent(term)}); 

该术语是UTF-8编码两次,结果是“%25C3%25BCBERFALL”,即百分比符号也是百分比编码的。类似地,如果我对参数映射中的每个值调用两次encode(术语,“UTF-8”),它对我来说也是有效的。

只编码一次而不解码字符串就会再次产生“``Berfall”。

共有1个答案

贝杜吟
2023-03-14

Java在内部使用什么编码?您开始应用程序时是否使用

-Dfile.encoding=utf-8

请澄清“JSP中的参数映射”是在哪里定义的。它是来自某个持久的datastorage,还是在代码中以文字形式给出的字符串?

关于正在发生的事情的一些想法,可能会有所帮助:

 类似资料:
  • 我的web应用程序存在编码问题。在Begging会议上,我认为问题在于数据库编码,但后来我排除了Servlet的bug。如下所示:JSP页面包含一个表单,用户在其中传递一个具有波兰字符的单词,例如“Poniedziałek”,然后我对接收此参数并将其传递给变量的servlet进行除错。变量中的结果为“PoniedziaÅek”。 我的JSP文件中的编码设置为UTF-8 我还尝试使用servlet设

  • 我尝试做一个java web应用程序。在本地Tomcat7服务器上一切都很好。我有一个jsp文件;

  • 有人能提出一些解决办法吗?

  • 我网站上的一位用户在文本字段中输入了特殊字符:Ảỏ 这些显然不是我可以从键盘输入的相同的äö字符,因为当我将它们粘贴到程序员的记事本中时,它们分成两部分:a–o–字符 在我的网站的服务器端,我有一个PHP脚本,它可以识别用户输入中的非法特殊字符,并在带有的html错误消息中高亮显示这些字符。 字符分割也发生在那里,因此我得到了一个普通的字母a和o,带有一个奇怪的单独的xCC字符,它破坏了UTF

  • 请查看Servlet类中的注释。如果将更改为,则无法访问应用程序。 为什么会出现这个问题?

  • 我正在尝试提交一个包含UTF-8字符的表单。 问题是,在查询日志中,日语字符是乱码的,从响应来看,它们似乎是双重编码的(UTF-8)。 如果我使用GET而不是POST,一切都会正常。谁能帮帮我吗?这在哪里得到双重编码?我该怎么修?