刚开始做这个项目的时候,就了解到有中文乱码问题,一直以来我也尽量避免接触这个问题,据说这问题还比较麻烦,所以,想等到开发后期来解决他。
现在,开发基本完成一大部分了,开始重点解决这个乱码问题。
网上也说了很多这方面的解决方案,具体问题应该具体解决,乱码问题有很多原因的,可能我的这个问题是比较简单的吧~~
设计数据库的时候,我就考虑到这个问题了,所以把所有表都设成了“GBK”编码,可以支持中文。用sql命令直接插入中文的时候,没有问题,select可以显示中文,说明我的sql设置是正确的。
所有的jsp文件我都加了这样一句“contentType="text/html; charset=GBK"”,jsp页面也是GBK编码的,防止和数据库的编码产生冲突。
这样设置后,提交表单的内容还是乱码,传到数据库和从数据库中读中文都会是乱码。
因为jsp页面在提交表单时的request用的是iso-8859-1编码方式,所以当我们得到传来的中文的时候,需要将iso-8859-1编码进行译码再编码成GBK编码。用GBK编码在jsp页面和数据库中显示和存储中文,编码方式不同,所以会出现乱码问题。
例:
我们将request中的name字段进行译码和编码,然后村到str中
String str = new String((request.getParameter("name")).getBytes("ISO-8859-1"),"GBK");//"GBK"不写也可以,会默认为GBK编码
好了,用str就不会出现乱码了。
在MVC开发过程中,我们可以在action读取form表单前,对表单内有中文的内容进行上面的处理,这样就可以啦~~
注:网上还看到这样的方法
request.setCharacterEncoding("GBK");来改变request传值的编码方式,在tomcat 5中是不行的,我试过,在网上找了找原因,没找到,不知道为什么。
阅读(3307) | 评论(2) | 转发(0) |