主题
Tomcat 端将 String 转换为 ByteArray 的编码方式采用 utf-8
在使用 Tomcat 服务端和 Android 客户端出现乱码的根本原因是由于 Tomcat 的 String 转 ByteArray 采用的编码集iso-8859-1
,而 Android 则是采用的UTF-8
。
解决方法:
- Tomcat 端将 String 转换为 ByteArray 的编码方式采用 utf-8
示例代码如下:
response.getOutputStream().write("中文".getBytes("utf-8"));
- POST 方式
比如表单提交,在Servlet或者Filter中设置
request.setCharacterEncoding("UTF-8");
就能很好的解决。
- GET 方式
GET方式:单纯设置request.setCharacterEncoding("UTF-8");是没有用的,所以我们把默认的iso-8859-1编码改成UTF-8,在TOMCAT的配置文件的server.xml中更改:
<Connector port="8080"protocol="HTTP/1.1"
connectionTimeout="20000"
redirectPort="8443" URIEncoding="UTF-8" />
添加URIEncoding=UTF-8
- Android 访问
上面的访问过程提到浏览器对中文进行编码,这里我们直接发送请求,并没有编码这个过程,所以我们需要自己手动编码,即:
String name =URLEncoder.encode("德玛西亚","UTF-8");