java web程序中文乱码解决方案
由于程序语言是老外弄的,乱码问题是所有程序员都不可避免的。尤其是用java时,中文乱码是每一位初学者头疼的问题。下面呆子对乱码问题提供全套的解决方案,希望对北风的网友有所帮助!
一、先说说编码,中文编码有GB2312、GBK,所以大伙在出现乱码时都喜欢这样来解决!呆子必须承认,这个办法是可以解决问题的,没有任何错误。但呆子不认为这是最好的办法,最好的办法应该采用UTF-8编码,具体原因自己百度一下,本文不予说明。
二、说说JSP乱码问题:对初学者来说JSP出乱码是很正常的一件事,解决办法也相对简单:下面看呆子如何解决:
a.在jsp页面头部加入<%@ page contentType=”text/html; charset=utf-8″ %>
b.在jsp页面的<title></title>上方最好加上一句<meta http-equiv=”Content-Type” content=”text/html; charset=utf-8″ />
c.注意,本方法只能解决jsp页面自身的问题,及jsp表单传递的编码问题。。确保不是乱码。
三、说说servlet乱码问题:看完二的朋友得骂呆子了,将jsp的数据传到servlet时仍然是乱码。下面提供servlet乱码的解决方案:
a.如果你要在当前servlet中输出数据,那么请加入这两句
res.setContentType(”text/html;charset=utf8″); 注意:charset可有可无的。
res.setCharacterEncoding(”utf8″); 这两句的作用就可以保证你输出的文字没有乱码。
当然有的朋友说只要最上面这句就行了,理论上是对的,但呆子做的过程中发现在当前servlet中显示正确。
但如果你要继续转向其他页面很有可能就错了。原因呆子没有认真研究。
b.如果你要获取来自表单等提供的数据的话,请加入这句:
req.setCharacterEncoding(”utf8″);
四、说说编辑工具乱码问题:DW不讲了。说说eclipse,在首选项里找到jsp页面等的encoding这一项,选择utf8,如果有很多种选法,就选utf8 unicode项。然后改一下相关的模板,这样就解决了。说说记事本之类的工具,在你设置为utf8字符后,在保存时要更改编码选项,选择utf8就OK了。因为记事本默认是ANSI码。如果不更改的话,那永远都是乱码。
五、说说ajax,在ajax应用中乱码也很常见。。记住一条,servlet中与上文一样,如果集合struts使用则在相关Action中加入在servlet中使用的那两条语句就解决了。
中文乱码的问题太多了,小弟将在下次再详述数据库乱码、及解决中文乱码之过滤器应用。敬请期待!!!
作者:呆子
来源:北风技术专栏
原文链接:http://column.ibeifeng.com/ietjfdnv/20081016155.shtml
( 内容完 )
添加收藏到:
您可能还对这些文章感兴趣:



6条评论, 我来评论
刘星辰
不错 说的好 初学者确实容易遇到这个问题
2008年12月09日 08:49
huangzhefeng
看的时候知道的,写代码的时候总是要缺几个页面和类不写这些语句,这个问题确实很烦,好好学习过滤器…
2009年02月17日 18:40
rock871029
没入精华啊!关于get和post提交的不同,也会出现乱码,解决下吧
2009年03月03日 14:36
yqsshr
乱码问题让很多想我一样的初学者找不到头绪,作者能归纳一下真是太好了,感觉作者讲的很真切,都是实际开发中的经验之谈,期待作者接下来的文章~~
2009年03月16日 16:54
匿名
还有iframe的问题。
2009年05月21日 12:47
匿名
请问一下,如何修改才能使MyEclipse新建jsp时默认页面编码为utf-8?
2009年08月20日 14:55
小贴士:评论需要管理员审核后才会显示。请不要发布与国家法律相抵触的言论,北风网将保留追究责任的权利。
类似“顶”、“沙发”、“支持”之类没有营养的文字,对勤劳贡献的作者来说是令人沮丧的反馈信息。
请勿到处挖坑绊人、招贴广告。既占空间让人厌烦,又没人会搭理,于人于己都无利。
如果您发现自己的评论没有被审核或者不见了,请参考以上三条。