Java与mysql乱码的问题

 
    安装选择GBK,使用选择UTF-8。

解决方法一:(最重要的一种方法)
            打开mysql目录下的bin文件夹,找到my.ini,使用记事本找开,分别找“[mysql]、[client]、[mysqld]”,添加(或改成)“default-character-set=utf8”。

             [mysql]

            default-character-set=utf8

           [client]

         default-character-set=utf8

          [mysqld]

            default-character-set=utf8

          然后建立表时,也要用(比如)
           DROP   TABLE   IF   EXISTS   `Company`;
          CREATE   TABLE   IF   NOT   EXISTS   `Company`
         (
               `Cname`   VARCHAR(10)   NOT   NULL,
                `Caddr`   VARCHAR(100),
              `Ctel`     VARCHAR(16)
          )ENGINE=InnoDB   DEFAULT   CHARSET=UTF8;

       这样就没问题。

      如果是jsp要声明:

        contentType="text/html;charset=gb2312"

     我用了一下好像没什么效果。

解决方法二:

      连接mysql时(无论在从mysql读还是取数据的情况),指定使用的编码方式为utf-8,具体代码如下

      //装载mysql-jdbc驱动

       Class.forName("com.mysql.jdbc.Driver").newInstance();

      //连接数据库

      Connection sqlCon = DriverManager.getConnection( "jdbc:mysql://localhost:3306/javatest?user=root&password=admin&useUnicode=true&characterEncoding=utf-8 " );

      我是用这个方法解决的。

解决方法三:

       如果方法一不行那么在方法一的基础上对读入的字符串进行强制编码方式转换。

      代码示例如下:

      String name = rst.getString("name");
      name= new String(name.getBytes("ISO-8859-1"),"utf-8");

       注:代码也可以为:String name =new String( rst.getString("name").getBytes("ISO-8859-1"),"utf-8"));其中rst为返回的 resultset,ISO-8859-1为mysql默认的编码方式,代码的目的是把以ISO-8859-1的编码转换为gb2312编码方式,这样强 制转换,可以解决一部分问题,如果结合方法一,应该可以解决中文乱码问题。

      这种感觉很麻烦。

方法四:在tomcat conf 里面的web.xml里面更改:

      <filter>  
            <filter-name>UTFEncoding</filter-name>  
            <filter-class>com.founder.chenph.Util.EncodingFilter_UTF8</filter-class>  
            <init-param>  
                 <param-name>encoding</param-name>  
                 <param-value>UTF-8</param-value>  
            </init-param>   
      </filter>   
      <filter-mapping>  
           <filter-name>UTFEncoding</filter-name>  
           <url-pattern>*.jsp</url-pattern>   
       </filter-mapping>  
      <filter-mapping>  
          <filter-name>UTFEncoding</filter-name>  
          <url-pattern>*.do</url-pattern>  
      </filter-mapping>

      应该可以从根本解决吧,不过我没试过这种方法(试想:如果不是自己的服务器,那怎么能修改这个呢)。

你可能感兴趣的:(java,mysql,String,jdbc,filter,table)