Skip to content

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");