2015-06-19 51 views
0

我在執行插入到mysql表時發生字符編碼問題。我關注的是表中的字段具有以下屬性:字符編碼使用callablestatement或jdbctemplate進行mysql插入

校對:utf8_general_ci VARCHAR與中國和外國字符時(255)

的問題。我試着使用CallableStatement來調用存儲過程,但由於出現的輸入如下它不工作:

????? 

我調試,發現CallableStatement的charencoding酒店有這個值;

Cp1252 

我還沒有找到改變這種情況的方法。我嘗試設置我插入到NVARCHAR的值,但也不起作用。有人建議嘗試的JdbcTemplate做插件沒有工作,以及:

Object[] params = new Object[] { Num, Name, Link,type,siteid,GreetingController.StreamID }; 
     int[] types = new int[] { Types.NVARCHAR, Types.NVARCHAR, Types.NVARCHAR,Types.INTEGER,Types.NVARCHAR, Types.NVARCHAR }; 

     recordsAffected= jdbcTemplateObject.update(sql, params, types); 

和CallableStatement的代碼:

Connection conn = DriverManager.getConnection(connectionUrl,info); 
     CallableStatement cstmnt = conn.prepareCall("{ call putNewPage(?,?,?,?,?,?) }"); 

     cstmnt.setString(1, Num); 
     cstmnt.setString(2, Name); 
     cstmnt.setString(3, Link); 
     cstmnt.setInt(4, type); 
     cstmnt.setString(5, siteid); 
     cstmnt.setString(6, GreetingController.StreamID); 

這是令人沮喪的。我知道在使用SQL插入編碼UTF-8時,.NET將它作爲默認值。感謝任何幫助,

+0

什麼RDBMS您使用的? – Stephan

+0

如果rdbms是mysql,您可以嘗試在使用相同jdbc連接的語句之前運行此查詢'SET NAMES utf8' – Stephan

+0

使用mysql的Im;感謝你的迴應;不知道如何做到這一點,所以在網上搜索,發現這樣做有很多不利因素。 http://blog.oneiroi.co.uk/mysql/mysql-forcing-utf-8-compliance-for-all-connections/ – vbNewbie

回答

0

儘量在連接字符串編碼以及這樣jdbc:mysql://localhost/some_db?useUnicode=yes&characterEncoding=UTF-8

+0

這工作。謝謝 – vbNewbie