URLEncoder和URLDecoder编码和解码Javadoc注意:如果不使用UTF-8怎么办?

时间:2010-09-01 17:09:20

标签: java encoding character-encoding decoding

因此,URLEncoder的编码和URLDecoder解码的javadoc中包含了这个注释:

Note: The World Wide Web Consortium Recommendation states that UTF-8 should be used. Not doing so may introduce incompatibilites."

但是,如果有人使用不同的编码类型发送请求,使用UTF-8进行编码不是一个坏主意吗?检查标题(如果存在)并使用其中指定的任何编码有什么问题吗?如果任何人都可以提供它,或许本说明书的更多背景将使它对我更有意义。

3 个答案:

答案 0 :(得分:1)

在同一文档中

  

推荐使用的编码方案是UTF-8。但是,出于兼容性原因,如果未指定编码,则使用平台的默认编码。

您可以更改编码,但因为它不符合W3C标准,所以这不是一个好主意。


资源:

答案 1 :(得分:1)

Tomcat和其他一些Web服务器有一个单独的设置,用于控制GET请求中用于URL的解码器。具体来说,Tomcat将使用服务器的默认字符编码,除非在“Connector”的URIEncoding属性中指定了一个。

我在处理类似问题时发现this post中的讨论很有帮助。

答案 2 :(得分:1)

某些国家/地区的网站确实使用其他编码,因为UTF-8对其语言效率低下。

网址通常不透明。它是由网站生成并由同一网站使用的ASCII字符序列。只要网站本身可以解析它,它就是好的。

另一方面,人们确实希望查看URL,尝试了解更精细的细节。浏览器在显示满%的编码八位字节的URL时,可能希望将它们转换回字符。不幸的是,它必须猜测字符编码,理论上编码可以是任何东西,甚至是专有编码。

此外,第三方可能希望生成他们无法控制的网站的URL。有多少程序动态生成Google搜索网址?同样,必须推测网站支持的编码。

因此,如果您是网站所有者,并且想要变得更好,那么最好支持UTF-8编码的URL。当然,你不必是。这是你的网址,取决于你。