javaweb网站get方式url传值中文汉字乱码问题解决方案

2015-12-30· 6555 次浏览
url传递参数到服务器时经常会出现乱码问题,这个主要是因为浏览器地址栏编码与Java不一致。 一般来说,web中如果要传递中文参数,会采用post ,很少采用url链接中挂中文的方式,如果非要使用,或是为了方便可以采用以下方法: ## 1.服务端接收后转换字符集 URL: hello.jsp?name=世界你好 Java: name=new String(name.getBytes("ISO-8859-1"), "utf-8"); ## 2.使用URLEncoder和URLDecoder进行两次编码和一次解码 **jsp** ```java <a href="hello.jsp?name=<%=URLEncoder.encode(URLEncoder.encode("世界你好"))%>">走着</a> ``` **java** ```java name = URLDecoder.decode(name); ``` 编码和解码时可以指定字符集,如:URLDecoder.decode( keyWord ,"utf-8"); 为什么是两次编码一次解码呢?因为服务器会默认解码一次。 ## 3.修改服务器配置,改变URI字符集 打开 tomcat/conf/server.xml 查找下面这部分 ``` <Connector port="8080" maxHttpHeaderSize="8192" ``` 在最后增加一段代码就可以了 ``` URIEncoding="UTF-8" useBodyEncodingForURI="true" /> ``` 这样处理后,可以不用解码了,用EL直接取出变量就可以~~~不过编码还是要的: **发送端** ``` <a href="hello.jsp?name=<%=URLEncoder.encode("Mr.Xia","utf-8")%>">测试</a> ``` **接收端** 直接用EL ${param.name} 就可以