频道栏目
首页 > 资讯 > Java > 正文

Jetty中文乱码问题的解决

13-01-23        来源:[db:作者]  
收藏   我要投稿
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>
如有不懂的,欢迎留言讨论。
 
 
 
相关TAG标签
上一篇:c++ 关联容器详解——从内部结构到应用
下一篇:再谈poj2255_解题报告
相关文章
图文推荐

关于我们 | 联系我们 | 广告服务 | 投资合作 | 版权申明 | 在线帮助 | 网站地图 | 作品发布 | Vip技术培训 | 举报中心

版权所有: 红黑联盟--致力于做实用的IT技术学习网站