在Http网络通信中,乱码的出现一般是客户端与服务端编码方式不一致导致的。
- 首先服务端和客户端编码为UTF-8
使用java编写的服务端一般是Tomcat,Tomcat默认的编码方式为ISO-8859-1,ISO-8859-1是不支持中文的。
解决办法一下两种:
- 更改Tomcat编码方式为UTF-8,更改server.xml
<Connector port="8080"protocol="HTTP/1.1"
connectionTimeout="20000"
redirectPort="8443"
URIEncoding="UTF-8" />
- 客户端转码(以C#为例)
...
string fileName = response.Headers["Content-Disposition"];//attachment;filename=FileName.txt
...
byte[] byteArray = System.Text.Encoding.GetEncoding("ISO-8859-1").GetBytes(fileName);
fileName = System.Text.Encoding.UTF8.GetString(byteArray);