Tomcat:URL中文编码设置:修订间差异
imported>Soleverlee |
imported>Soleverlee |
||
第65行: | 第65行: | ||
URIEncoding="UTF-8"/> | URIEncoding="UTF-8"/> | ||
</source> | </source> | ||
可以看出URL部分的参数已经正常了,不过POST部分还是不对。 | |||
<pre> | <pre> | ||
=>GET | =>GET |
2016年3月21日 (一) 16:11的版本
tomcat中,如果不设置URL编码,URL中带有中文字符时会导致乱码。解决方法是对URL进行编码,并在tomcat中进行设置。 server.xml
<Connector port="8080" protocol="HTTP/1.1" connectionTimeout="20000" redirectPort="8443" URIEncoding="UTF-8" />
测试TOMCAT编码
来写个小程序测试下:
public class HelloServlet extends HttpServlet{
@Override
public void doGet(HttpServletRequest request, HttpServletResponse response){
System.out.println("=>GET");
System.out.println(request.getRequestURI());
this.printParam(request);
}
void printParam(HttpServletRequest request){
Map<String, String[]> params = request.getParameterMap();
for(String k:params.keySet()){
System.out.print("\t?" + k + "=");
for(String v:params.get(k))
System.out.println("(" + v + ")");
}
}
@Override
public void doPost(HttpServletRequest request, HttpServletResponse response){
System.out.println("=>POST");
this.printParam(request);
}
}
web.xml中配置:
<servlet>
<servlet-name>HelloWorldServlet</servlet-name>
<servlet-class>com.riguz.tc.HelloServlet</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>HelloWorldServlet</servlet-name>
<url-pattern>/*</url-pattern>
</servlet-mapping>
GET乱码
如果不加任何配置,一个tomcat运行起来后,输出是这样子的:
=>GET /tc/hello ?id=(COM_RIGUZ_???è??_0001) =>POST ?id=(COM_RIGUZ_???è??_0001) (COM_RIGUZ_???è??_0001) ?name=(??????????°???±??????)
我们在tomcat的server.xml加上URL编码,再看看输出:
<Connector port="8080" protocol="HTTP/1.1"
connectionTimeout="20000"
redirectPort="8443"
URIEncoding="UTF-8"/>
可以看出URL部分的参数已经正常了,不过POST部分还是不对。
=>GET /tc/hello ?id=(COM_RIGUZ_测试_0001) =>POST ?id=(COM_RIGUZ_测试_0001) (COM_RIGUZ_???è??_0001) ?name=(??????????°???±??????)