javaweb网站get方式url传值中文汉字乱码问题解决方案
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} 就可以