先转换为utf-8,在写数据库前再转换为gbk

解决方案 »

  1.   

    String aaa=new String(aaa.getByte("GBK"),"8859_1");
      

  2.   

    我不太明白你的意思,能否更清楚一点?在程序里吗?那样的话,要改的太多了,可否告诉我哪些配置一改,比如说tomcat里,或者是jdk里等等。听说tomcat启动文件里调用java之前可以设置编码方式,哪位曾经碰到过同样的问题?
      

  3.   

    写的是jsp,就是汉字编码问题。
      

  4.   

    根本就用不着进行编码转换,只不过默认得编码是utf-8
    你只要告诉java你要传输的内容的编码方式就可以了。
    做法:
    在你调用request.getParameter之前加上request.setCharacterEncoding("gb2312");
      

  5.   

    楼上,我写过request.setCharacterEncoding("gb2312");
    ,没用,有人建议我用filter,可是这里好想没人知道filter的用法,哎,那些星星都跑哪儿去了?
      

  6.   

    在web.xml中加入下面的内容,再不明白就看看tomcat里面的例子jsp-examples,注意使用的filter类。    <filter>
            <filter-name>Set Character Encoding</filter-name>
            <filter-class>filters.SetCharacterEncodingFilter</filter-class>
            <init-param>
                <param-name>encoding</param-name>
                <param-value>gb2312</param-value>
            </init-param>
        </filter>
      

  7.   

    还从来没有遇到过没有转不过来的编码问题:
    首先测试你的机子默认是什么编码,通过System.get...()获得,那么你的一般Java类里面的字符便是那个编码,然后在看数据库加入不加连接参数的各种编码方式,就是看传SQL进去时认什么编码,从数据库出来时什么编码,各种JDBC驱动有可能不同。
    然后的外能法宝就是在JSP页面里面根本不写什么PageEncoding什么的,因为默认是ISO-8859-1,那么编译成Servlet源码然后在Javac时,自然便是ISO-8859-1,但是加入在JSP页面里面调用其他的Java类里面的中文字符时,可能出现乱码,因为那些类使用系统默认的编码编译(GBK);当从客户端的form里面传来参数时,这是是ISO-8859-1编码,所以加入这时根据这些参数要组成SQL语句的话,那么必须将这些字符(Iso-8859-1)转化成数据库JDBC输入的编码方式(上面已经测出),当从数据库里面得到结果是,根据JDBC传出来的编码(上面已经测出)格式转化为iso-8859-1编码,那么现在所有的编码格式都为iso-8859-1编码了,当然不会出现乱码。看结果不能从控制平台看,因为他是使用系统默认编码(GBK),所以肯定是乱码了。要试出数据库驱动的编码,原则就是打开数据库的客户端,加入你的SQL insert命令正确(编码正确),那么客户端便可以正常显示(要信任客户端),加入没有的话,那么比较麻烦。我不知道是不是所有的JDBC驱动都支持可以配置参数,是不是规范呀?但是这个办法虽然试麻烦,但是假如理解了,那么便是“一不变应万变”,屡试不爽
      

  8.   

    如果你是以post方式提交到处理页面,在存入数据库之前要先转码 ,如:
    String abc=request.getParameter("....");
    abc=new String(abc.getBytes("iso8859-1"),"GBK");
    ...................
    写入数据库.......
      

  9.   

    主要有两个地方
    一个是request的时候,java会自动转换,还有一个就是在与数据库交互的地方
    java中的字符是utf-8,所以你把交界处的转换一下
      

  10.   

    各种数据库驱动是不样的,这是特别注意的地方,必须先看你使用的JDBC驱动是怎么回事
      

  11.   

    public static String toChinese(String str)
      {
        try
        {
          if(str==null)
          {
            return null;
          }
          else
          {
            str=new String(str.getBytes("GBK"),"ISO8859_1");
            return str;
          }
        }
        catch(Exception e){
          return null;
        }
      }
      

  12.   

    奇怪,我明明结贴了,还说什么非零贴才能怎么怎么着。csdn的bug,不许扣我的信誉分。!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!