首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 软件管理 > 软件架构设计 >

怎么彻底解决java开发中的乱码有关问题

2012-11-09 
如何彻底解决java开发中的乱码问题在java开发中,经常会遇到乱码问题(包括中文乱码、其他国家语言文字乱码等

如何彻底解决java开发中的乱码问题
在java开发中,经常会遇到乱码问题(包括中文乱码、其他国家语言文字乱码等),怎么样才能花最小的代价来解决这个问题呢?下面就将提供一种方式来彻底解决这个麻烦。(本方法已经在很多项目中使用,希望能给那些为乱码困扰的朋友带来帮助!)

方法分成以下3个步骤(请放心,每一步都非常简单)

1. 首先将开发项目(如在Eclipse中创建的项目)的设置成UTF-8编码方式(如下图)。这一点在开始一个新的项目的时候尤其重要,目前的项目基本上都使用UTF-8编码了。


2. 确保项目内的所有开发文件都是UTF-8编码的。这里的开发文件主要指:java,jsp,html,js,css,xml类型等开发涉及到的文件,当然图片文件就不用了,貌似没有UTF-8的图形文件。其中的java,js,css,xml类型文件,只要文件的编码方式为UTF-8就可以了。而jsp文件则还需要在文件内容中设置如下:


另外html文件还需要在文件内容中设置:


对jsp文件和html文件要特别注意,大多数时候遇到乱码是因为粗心没有进行UTF-8编码或者文件内容没有设置对造成的。遇到乱码问题一般先检查相应的文件编码和内容是否符合要求。
如果原来不是UTF-8编码的可以用文本工具进行转换,包括最简单的记事本也可以将打开的文件另存为UTF-8编码,当然可以用UltraEdit工具转换[菜单:文件-转换-ASCII转UTF-8]更加方便。

3. 在项目应用中加一个编码虑镜。编码虑镜的代码(很简单的)具体如下:
<filter><filter-name>SetCharacterEncoding</filter-name><filter-class>com.soft4j.filter.CharsetFilter</filter-class><init-param><param-name>encoding</param-name><param-value>UTF-8</param-value></init-param></filter><filter-mapping><filter-name>SetCharacterEncoding</filter-name><url-pattern>/*</url-pattern></filter-mapping>


这样能确保所有出入项目的调用都是UTF-8编码的。

经过上面的3个步骤后,你的java项目就不必再受到乱码的困扰了,当然在实际的开发中,由于使用一些第3方的开源组件可能会遇到乱码问题,不过,大部分的问题都是由于开源组件造成的,不必怀疑自己的项目。只要对开源组件中的编码方式进行设置或者作相应的修改,一般就能解决问题。

这是我在javaeye博客上的第一篇文章,希望给一些遇到类似问题的朋友带来帮助。

让我们一起努力吧,我行我可以!

stephen 2008-10-17 1 楼 amcucn 2008-10-19   文章不错!目前我工作的时候就是采用这种办法! 2 楼 stephen830 2008-10-19   谢谢 amcucn 的赞赏,确实如此,从最早使用java开始就一直被乱码所困扰,到目前基本上已经彻底告别了这个问题。

记得最早的时候,大家都在用getBytes()方法进行转码,那时候真的很麻烦。不过,现在好了,雨过天晴,很舒畅。 3 楼 chenlb 2008-10-20   过虑器,tomcat、spring自带有。 4 楼 chenlb 2008-10-20   过虑器,tomcat、spring自带有。 http://chenlb.iteye.com/blog/196528 5 楼 fabulous 2008-10-20   只能解决以post提交的问题...还有get的呢 6 楼 stephen830 2008-10-21   184168730@qq.com 写道
只能解决以post提交的问题...还有get的呢

get方式同样有效,浏览器一般默认都是以utf-8方式发送url的。 7 楼 fabulous 2008-10-22   stephen830 写道
184168730@qq.com 写道只能解决以post提交的问题...还有get的呢get方式同样有效,浏览器一般默认都是以utf-8方式发送url的。

理论上是可以 但是我现在做的就不行 我用get的方式提交站内搜索,提交内容就变成乱码了 8 楼 fabulous 2008-10-22   stephen830 写道
184168730@qq.com 写道只能解决以post提交的问题...还有get的呢get方式同样有效,浏览器一般默认都是以utf-8方式发送url的。

理论上是可以 但是我现在做的就不行 我用get的方式提交站内搜索,提交内容就变成乱码了 9 楼 fabulous 2008-10-22   晕 不小心就提交了两次 是我的问题还是JE的问题呀  呵呵 10 楼 fabulous 2008-10-22   晕 不小心就提交了两次 是我的问题还是JE的问题呀  呵呵 11 楼 stephen830 2008-10-22   184168730@qq.com 写道
stephen830 写道184168730@qq.com 写道只能解决以post提交的问题...还有get的呢get方式同样有效,浏览器一般默认都是以utf-8方式发送url的。理论上是可以 但是我现在做的就不行 我用get的方式提交站内搜索,提交内容就变成乱码了


表单方式 get方式提交后,浏览器会自动对参数进行utf-8编码,空格全部用+替换,request接收时自动对参数解码,同时把+替换回空格;

如果是url的get方式,浏览器也会自动对参数进行utf-8编码,空格全部用%20替换,request接收时同样自动对参数解码,同时把%20替换回空格。

12 楼 奇迹海 2012-05-16   楼主,问一下  我做的上传文件,页面都是UTF-8的,但上传的文件是GBK的,要怎么处理,显示到页面才不会是乱码?

热点排行