Tomcat 处理包含中文的请求乱码问题
背景
流程引擎 Camunda 需要部署在 Tomcat 上,之前部署和使用的时候发现,如果请求内容中包含中文(无论采用 GET 还是 POST),经过 Camunda 处理之后存在数据库中,内容会乱码。
经搜索,找到一个可能的原因是:如果没有指定字符编码,Servlet 规范规定使用 ISO-8859-1 作为默认的编码。
GET 请求
修改 Tomcat 的 conf 目录下的 server.xml
,将 Connector
中指定 URIEncoding="UTF-8"
,如下。
1 | <Connector port="8080" protocol="HTTP/1.1" |
POST 请求
POST 请求需要指定它发送的参数和值的编码,因为大多数客户端并没有设置一个明确的编码,默认采用的是 ISO-8859-1。
大多数情况下,这并不是我们想要的编码,我们可以使用过滤器来进行控制,Tomcat 已经提供了完成这个功能的过滤器的例子或者内置了,只要启用即可。
1 | <!-- conf/web.xml --> |