java +mysql 执行代码发生如下错误 
业务描述: 
源库 的表 以及该表里所有字段 全部都是latin1 
目的库的表 以及该表里所有字段 也全部都是latin1 
现在发现从源库 用java代码取出的数据是当是某些不明国家的字符集的时候insert他们到目的库发现失败 (我将这些字段类型改为utf8 发现导出是成功的  但是工程禁止使用utf8, 所以只能考虑其他方法解决问题) Â?panilsko - 1. liga - basketbal" eventid="183511.1 
Exception in thread "main" java.sql.SQLException: Incorrect string value: '\xC2\x8Apani...' for column 'colName' at row 1 
at com.mysql.jdbc.SQLError.createSQLException(SQLError.java:1056) 
at com.mysql.jdbc.SQLError.createSQLException(SQLError.java:957) 
at com.mysql.jdbc.MysqlIO.checkErrorPacket(MysqlIO.java:3376) 
at com.mysql.jdbc.MysqlIO.checkErrorPacket(MysqlIO.java:3308) 
at com.mysql.jdbc.MysqlIO.sendCommand(MysqlIO.java:1837) 
at com.mysql.jdbc.MysqlIO.sqlQueryDirect(MysqlIO.java:1961) 这里'colName' 字段类型是varchar  字符集是latin1 不允许修改 
代码部分如下 
colNam=new String(colNam.getBytes("utf-8"),"latin1"); //我已经对这个字符进行了转换 
PreparedStatement pStmt=null; 
pStmt=conn.prepareStatement("INSERT INTO aa" + 
                "(id,typeId,colName)"+ 
                " values(?,?,?)"); 
conn.setAutoCommit(false); pStmt.setString(1,id); 
pStmt.setString(2,typeId); 
pStmt.setString(3,colName); 
int j=pStmt.executeUpdate(); 
conn.commit(); 
不知道如何解决问题  (提示 我在某台机器上是可以正常执行这段代码,数据也全部导到目的db机器;但是换到其他机器就是通不过 Exception in thread "main" java.sql.SQLException: Incorrect string value: '\xC2\x8Apani...' for column 'colName' at row 1)

解决方案 »

  1.   

    字符集原因引起的,请参考:
    http://blog.csdn.net/ACMAIN_CHM/archive/2009/05/12/4174186.aspx 
      

  2.   

    naem COLLATE latin1_swedish_ci as name
      

  3.   

    java code 使用这个naem COLLATE latin1_swedish_ci as name  还是 不可以
    Incorrect string value: '\xC2\x8Apani...' for column 'c
      

  4.   

    MySQL乱码没有解决。取出来的值是乱码。
      

  5.   

    如果确定 乱码原因 发生在:   增、改数据库记录的sql中!向DB中输入中文:str=new String(str.getBytes("ISO-8859-1"));在进行增改之前,须把参数(str)进行编码转换!然后再放入sql语句。
    java在数据传输时,采用 ISO-8859-1。