关于url传参中文乱码问题

时间:2021-01-19 21:08:58

之前都一直很不了解中文编码得问题,之前在做项目中没碰到那么头痛的问题。所以一直没有了解中文乱码的问题。

 

问题描述:   

地址:

http://localhost:8080/sun-government/contest/get_teams_by_type_with_page?typeName=新材料

 

当在windows

跑 myeclipse的命令台  能正确打印出typeName的参数,而且持久层并没有问题。

当在 linux

       跑catalina模式  打印出乱码,持久层也是乱码。

 

 

百度了好几个好几个小时,测试上传部署测试上传部署后

问题解决了:

在传入参数时候中文urlencode

在获取参数时编码:

new String(words.getBytes("iso8859-1"), "utf-8")

       (好像是直接urldecode也行)

这样获取参数后 在linux打印输出和持久层都没问题,但是在windows下跑就出问题了。

 

 

 

疑问:

网页编码,控制台编码,持久层编码三者究竟关系是怎么样的,三个层之间的传参过程中编码是怎么样的。(这次的解决问题只是通过百度尝试得出解决方案,并不理解)

 

 

 

 

 

总结

可靠的 解决url传参中文乱码问题的方案:

  1. 如上所述 new String(words.getBytes("iso8859-1"), "utf-8") (可能是gbk 可能是utf-8) 不过这还不懂为何是utf-8,对应哪个设置
  2. 在网页传入后台之前对url进行 urlencode  ,后台获取参数时 进行urldecode

( 不过这个并未尝试成功)