首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 网站开发 > Web前端 >

Tomcat处置HTTP请求中文乱码

2012-09-28 
Tomcat处理HTTP请求中文乱码一个HTTP请求分为三部分,例如http://host:port/musiclist/query.do?musicname

Tomcat处理HTTP请求中文乱码

一个HTTP请求分为三部分,例如http://host:port/musiclist/query.do?musicname=歌曲名

浏览器发送这个请求时(POST,GET)会对请求中的非ASCII?字符用某种字符集(一般为UTF-8)进行编码.

此时Tomcat在接受请求时(未传递给具体应用)会对请求进行解码,默认会使用ISO-8859-1对pathInfo部分(示例中query.do)进行解码.可以通过设置URIEncoding参数指定解码使用的字符集.

例如:?<Connector URIEncoding=”UTF-8” ?..../>

对于QueryString部分(musicname=歌曲名)是在应用第一次调用request.getParameter被解码的.默认使用ISO-8859-1进行解码.浏览器在发送请求时会发送一个ContentType的HEAD,其中包含charset这个参数,这是实际的QueryString的编码字符集.应用中要使用这个参数对GET方式的HTTP请求进行解码,才不会乱码.对于Tomcat要进行如下设置??<Connector URIEncoding=”UTF-8” useBodyEncodingForURI=”true”/>.做此设置后,对于GET方式的HTTP请求一般就不会有乱码问题了.

对于POST方式的HTTP请求,QueryString是在HTTP body中传递给服务器的.只需使用request.setCharacterEncoding(charset) 设置解码字符集即可.

?

总结

由于不同的浏览器对PathInfo部分的编码方式可能不同,所以这部分一定不要使用非ASCII字符.

对于QueryString部分,可以通过<Connector URIEncoding=”UTF-8” useBodyEncodingForURI=”true”/>设置,和request.setCharacterEncoding(charset)方法解决编码问题.

热点排行