在我试图帮助的网站上,用户可以在浏览器中输入一个URL,如下面的汉字,
http://localhost:8080?a=??
Run Code Online (Sandbox Code Playgroud)
在服务器上,我们得到
GET /a=%E6%B5%8B%E8%AF%95 HTTP/1.1
Run Code Online (Sandbox Code Playgroud)
如您所见,它是UTF-8编码,然后是URL编码.我们可以通过在Tomcat中将编码设置为UTF-8来正确处理.
但是,有时我们在某些浏览器上获得Latin1编码,
http://localhost:8080?a=ß
Run Code Online (Sandbox Code Playgroud)
变成
GET /a=%DF HTTP/1.1
Run Code Online (Sandbox Code Playgroud)
无论如何在Tomcat中正确处理这个问题?看起来服务器必须做一些智能猜测.我们不希望100%正确处理Latin1,但是假设一切都是UTF-8,那么任何东西都比我们现在做的要好.
服务器是Tomcat 5.5.支持的浏览器是iPhone 6 +,Firefox 2+和iPhone上的Safari.