建议:URL中最好不要传递中文
中文乱码一直都是web开发者比较头痛的问题,稍不注意,设置了错误的编码方式或忘记设置,就能出乎意外地看到不想看见的乱码,解决起来也比较棘手。web应用服务器、页面、数据库等等全部都设置成统一的编码GB2312,ok,问题暂时解决了。
?
为什么说暂时呢,因为你的web应用目前直接供互联网或局域网访问,也许功能是正常的,但是说不定哪天,部署了代理网关设备之后就可能导致部分页面打开不正常,乱码又跑出来捣乱,这是怎么回事呢?
?
虽然我下面所说的原因不代表全部,但却是一个很重要的原因,就是点击的超链接里面含有中文或其他非英文字符。之前web应用运行一切正常是因为数据从客户端发到服务端处理后返回到客户端的过程中间没有经过其他web服务器处理,假如中间放置了一台web代理服务器,例如SSL VPN,而且这台服务器对数据进行必要的转码处理,那么就有可能出现乱码现象。
?
要想解决这个状况最好的做法就是修改web应用程序,把所有url链接上有可能包含中文的参数进行URLEncoder.encode(str)编码,在接收参数的地方进行URLDecoder.decode(str)解码,这样经过处理的url就不会含有中文了,与其他网络设备协同工作也不会再有乱码问题了。
?
建议web开发者养成良好的编码习惯,为了以后方便维护,也为了避免给别人添麻烦,永远都不要在URL链接中包含中文。