不用中文,写的时候把中文转成iso8859-1
读出来显示的时候 在转回去就可以了

解决方案 »

  1.   

    难道mysql的JDBC driver 没有解决这个问题?
      

  2.   

    不用中文,写的时候把中文转成iso8859-1
    读出来显示的时候 在转回去就可以了如何转化??
      

  3.   

    /**
       * 将ISO8859-1编码转为中英字符串
       * @param str
       * @return
       */
      public static String unToTrueAsciiStr(String str){
         byte[] bt = str.getBytes();
         int i,l=0,length = bt.length,j=0;
         for(i = 0;i<length;i++){
          if(bt[i] == 0){
             l++;
         }
        }
       byte []bt2 = new byte[length-l];
       for(i =0 ;i<length;i++){
       if(bt[i] == 0){
         i++;
        bt2[j] = bt[i];
        }
       else{
         bt2[j] = (byte)(bt[i]|0x80);
        }
         j++;
         }
        String tt = new String(bt2);
         return tt;
       }   /**
        * 将中英字符串转为ISO8859-1编码
        * @param str
        * @return
        */
       public static String toTureAsciiStr(String str){
          StringBuffer sb = new StringBuffer();
          byte[] bt = str.getBytes();
          for(int i =0 ;i<bt.length;i++){
          if(bt[i]<0){
           sb.append((char)(bt[i] & 0x7f));
          }else{//是英文字符 补0作记录
           sb.append((char)0);
           sb.append((char)bt[i]);
           }
         }
        return sb.toString();
       }
      

  4.   

    我不明白也,我用jdbc就支持啊,怪怪的说,偶用mm做的jdbc driver
      

  5.   

    Connection con=DriverManager.getConnection("jdbc:mysql://localhost/mysql?user=user_name&password=user_password&useUnicode=true&characterEncoding=GBK");试试吧:)Statement stmt=con.createStatement(ResultSet.TYPE_SCROLL_SENSITIVE,ResultSet.CONCUR_UPDATABLE);
    stmt.executeUpdate("insert into some_table(column_name,……) values('英雄',……)");OK!!
      

  6.   

    Support peacock_king(孔雀王) .
    MySql jdbc lib contains readme. Hehe.
      

  7.   

    我的做法是
    Statement stmt=con.createStatement(ResultSet.TYPE_SCROLL_SENSITIVE,ResultSet.CONCUR_UPDATABLE);
    stmt.executeUpdate("insert into some_table(column_name,……) values('英雄',……)");这个例子的话,用上 xiazhihan(零点一刻) 的那个程序
    String tmpsql = "";
    tmpsql = unToTrueAsciiStr(("insert into some_table(column_name,……) values('英雄',……)");
    stmt.execute(tmpsql);一般的jdbc驱动都不会支持中文直接输入数据的,jdbc-odbc就可能支持,但是jdbc-odbc慢,而且少了很多功能的
      

  8.   

    为了确保一定可以运行我给我的转码程序你了
    public String ChineseStringToAscii(String s){
    try 
    {
    CharToByteConverter toByte = CharToByteConverter.getConverter("gb2312"); 
    byte[] orig = toByte.convertAll(s.toCharArray()); 
    char[] dest = new char[orig.length];
    for (int i=0;i<orig.length;i++)
    dest[i] = (char)(orig[i] & 0xFF); 
    return new String(dest); 
    }
    catch (Exception e) {
    //System.out.println(e); 
    return s; 
    }
    }
    public String isoToChinese(String s){
    if (s != null) {  
    try {  
    return new String(s.getBytes("ISO8859_1"));

    catch (Exception e) {  
    return "";
    }
    }
    return "";
    }