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

Jetty中文乱码有关问题的解决

2013-01-25 
Jetty中文乱码问题的解决jetty中文问题一直没有Tomcat做的好,所以经常出现中文乱码问题。工作中用到了jetty

Jetty中文乱码问题的解决

jetty中文问题一直没有Tomcat做的好,所以经常出现中文乱码问题。

工作中用到了jetty-maven-plugin,用jetty和maven配合部署发布项目,但是在浏览器中请求的时候总是出现中文乱码,而把项目部署到Tomcat下面则一切正常。由于一直比较忙,加上线上环境用的是Tomcat,不影响工作,就没有去解决它。今天看着那些奇形怪状的乱码实在是感觉不舒服,就抽出些时间查看了下相关方面的问题。

谷歌百度了一阵,发现了很多这方面的问题,但是跟我的问题都不一致。也试了更改Jetty版本等一些解决方案,都行不通。

于是调出chrome浏览器的开发者工具(在chrome中按F12键),详细查看了下相关的Request和Response的相关参数,发现程序Response的内容也是没问题的,就是在浏览器解析的过程中发生了乱码。并且在比对了Jetty和Tomcat的参数时发现,

Tomcat的Response:

Content-Type:text/html;charset=UTF-8

Jetty的Response:

Content-Type:text/html

看来这儿肯定有问题,再加上谷歌上找到的一些资料,我想到了用Response重新设置ContentType,相关代码如下:

@RequestMapping(value= "getDealGeoSearchForMobile")
@ResponseBody
publicbyte[] getDealGeoSearch(HttpServletResponse response) {

response.setContentType("text/html;charset=UTF-8");

return“中文”;
}

再测试了下,乱码终于不见了。一切正常。

另外,在web.xml中也要配置相关的EncodingFilter以用来使编码变为UTF-8,配置如下:

<filter>

<filter-name>encodingFilter</filter-name>

<filter-class>org.springframework.web.filter.CharacterEncodingFilter</filter-class>

<init-param>

<param-name>encoding</param-name>

<param-value>UTF-8</param-value>

</init-param>

<init-param>

<param-name>forceEncoding</param-name>

<param-value>true</param-value>

</init-param>

</filter>
<filter-mapping>

<filter-name>encodingFilter</filter-name>

<url-pattern>/*</url-pattern>

</filter-mapping>

如有不懂的,欢迎留言讨论。




热点排行