Chinaunix首页 | 论坛 | 博客
  • 博客访问: 595639
  • 博文数量: 61
  • 博客积分: 4112
  • 博客等级: 上校
  • 技术积分: 749
  • 用 户 组: 普通用户
  • 注册时间: 2006-06-27 16:20
文章分类

全部博文(61)

文章存档

2016年(1)

2013年(1)

2012年(2)

2010年(1)

2008年(2)

2007年(25)

2006年(29)

分类: Java

2007-05-02 00:55:51

    刚开始做这个项目的时候,就了解到有中文乱码问题,一直以来我也尽量避免接触这个问题,据说这问题还比较麻烦,所以,想等到开发后期来解决他。
    现在,开发基本完成一大部分了,开始重点解决这个乱码问题。
    网上也说了很多这方面的解决方案,具体问题应该具体解决,乱码问题有很多原因的,可能我的这个问题是比较简单的吧~~
    设计数据库的时候,我就考虑到这个问题了,所以把所有表都设成了“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) |
给主人留下些什么吧!~~

chinaunix网友2009-04-06 10:45:42

ghfg