CSDN博客

img yzw_sy

中文乱码

发表于2008/10/2 14:04:00  416人阅读

    编码最好还是采用utf-8。但是用utf-8,在使用mysql数据库的时候好像有问题。出现乱码可能是下面这些地方的编码设置有问题:浏览器,jsp,html,页面间参数传递,服务器,读取数据库,数据库的编码设置。

  

以下内容为转载:

       Jsp中文乱码小议  
                          -------
郭鹏
 
  Jsp
是一个很热门的话题,但让大多数人都头痛的是JSP页面中的乱码问题,笔者身有体会;曾为了解决中文乱码问题郁闷了好几天,试了很多方法都不行。最后在JSP专业人士的帮助下,终于解决。之后笔者曾对此做了一些小的研究。
 
 
首先我们先了解一下问题的原因。一般情况在在每个JSP页的头部都有这样一条语句:
 
  <%   page   contentType="text/html;   charset=gb2312"   %>
这条语句决定了此页面使用GB2312编码形式,而在数据库中一般用的是iso-8859-1字符集存储数据.   Java程序在处理字符时默认采用统一的ISO-8859-1字符集(体现Java国际化思想),所以在添加数据时,默认的字符集编码是iso-8859-1,而页面采用的是GB2312,所以就出现乱码问题。为解决此问题应在存储的时候把GB2312换转成iso-8859-1。有此时候在读出时也会出现乱码,那么只需反过来就可以了,把iso-8859-1转换成GB2312
 
 
具体实例归纳了以下几点,也许会对大家有一些帮助。
 
  1
在建立JSP页面时应该注意在jsp页面的头部加入一下代码
 
  <%   page   contentType="text/html;   charset=gb2312"   %>  
 
此方法是解决JSP页面显示时的乱码。
 
  2
有时还需在HTML代码中的<head></head>中加入这句
 
  <meta   http-equiv="Content-Type"   content="text/html;   charset=gb2312">  
  3
bean中用的是iso-8859-1编码,在jsp中一般用GB2312编码,处理此类乱码问题如下
 
  String   str=new   String(strName.getBytes(“iso-8859-1”),”GB2312”);  
 
具体用到此方法的地方为,当提交表单到beanbean的功能是存储数据到数据库)表单提交后,数据库中存入的数据确变成了????,因此在调用bean之前应对编码进行转换,方法:
String   str=new   String(request.getParameter().getBytes(“iso-8859-1”),”GB2312”);  
 
这样,存入数据库的数据库的数据就可见了。
 
  4
对于页面间的参数传递也可以用这个方法来处理乱码问题:
 
        public   String   getStr(String   str)  
        {  
                try  
        {  
              String   temp_p=str;  
      byte[]   temp_t=temp_p.getBytes("ISO8859-1");  
      String   temp=new   String(temp_t);  
      return   temp;  
        }  
        catch(Exception   e)  
        {}  
        return   "null";  
  }  
  5
在表单定义时加上这个属性有时也可以解决表单提交过程中出现的乱码
 
  <form   enctype="multipart/form-data"></form>  
  6
提交英文字符能正确显示,如果提交中文时就会出现乱码。原因:浏览器默认使用UTF-8编码方式来发送请求,而UTF-8GB2312编码方式表示字符时不一样,这样就出现了不能识别字符。解决办法:通过request.setCharacterEncoding("gb2312")对请求进行统一编码,就实现了中文的正常显示。

阅读全文
0 0

相关文章推荐

img
取 消
img