多语言展示
当前在线:1559今日阅读:60今日分享:41

java接受GET请求的中文出现乱码

在本地接受中文的时候,出现了乱码,于是转码,好了,可把代码发布到线上,又出现了乱码
方法/步骤
1

本地出现乱码的时候,就用下列的方法转了以下码:destination=new String(destination.getBytes('iso8859-1'),'utf-8');

2

代码发到到线上,又出现了乱码, 把转码去掉就好了。请求的都是UTF-8的编码。于是用下列方法,获取一下java文件的编码System.getProperty('file.encoding') 结果:本地:GBK线上:UTF-8

3

这样就可以解释,为什么本地需要转码(因为本地是GBK),而线上不需要转码了(因为线上是UTF8)。可线上代码和本地代码是一样的呀

4

于是从web服务器tomcat入手.对比了线上和线下,tomcat的配置文件web.xml 和 server.xml在server.xml中发现了一些区别,线上的有URIEncoding='UTF-8' ,而本地的没有,在本地的server.xml加上这个,重启tomcat就好了,如下图

5

原来:这个乱码的原因也是tomcat的内部编码格式iso8859-1导致。Tomcat会以get的缺省编码方式iso8859-1对汉字进行编码,编码后追加到url,导致接受页面得到的参数为乱码。要想影响这个编码则需要在server.xml的Connector节点增加URIEncoding='UTF-8'

推荐信息