通过URL Java

时间:2017-09-27 08:59:23

标签: java url special-characters

假设我有一个带有“é”的字符串,我希望通过URL将其发送到下一个控制器,字符被编码为%C3%A9,当它在另一个控制器中收到时,它会得到解码为“Ô。 我的问题是,如何在URL上对“é”进行编码,这样当它在另一个控制器中被接收时,它会被解码为“é”?现在,我正在手动更换它们。我需要一种方法来自动完成并使用任何特殊字符(éèà...) 谢谢。

1 个答案:

答案 0 :(得分:0)

不幸的是,没有办法声明URL数据的编码。常见的编码曾经是ISO-8859-1或Latin1,但现在,UTF-8经常用于新开发。原因是servlet规范说当没有指定charset时,暗示了ISO-8859-1,但HTML 4.0建议使用UTF-8作为URL。

问题是URL由字节组成,并且servlet容器在将其传递给应用程序之前将其转换为java字符,因此您必须在servlet容器级别声明使用的charset。出于兼容的原因,版本8.0之前的着名Tomcat默认为URL的Latin1字符集。从8.0.0开始,默认值现在取决于“严格的servlet遵从性”设置。当为真时为ISO-8859-1,为假时为UTF-8

参考文献:

对于您的确切问题,您有两种方法可以正确处理é字符:

  • 保持servlet容器配置不变,并在ISO-8859-1中编码URL(é将为%E9
  • 坚持使用URL中的UTF-8,但将其声明为servlet容器
相关问题