我在執行插入到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將它作爲默認值。感謝任何幫助,
什麼RDBMS您使用的? – Stephan
如果rdbms是mysql,您可以嘗試在使用相同jdbc連接的語句之前運行此查詢'SET NAMES utf8' – Stephan
使用mysql的Im;感謝你的迴應;不知道如何做到這一點,所以在網上搜索,發現這樣做有很多不利因素。 http://blog.oneiroi.co.uk/mysql/mysql-forcing-utf-8-compliance-for-all-connections/ – vbNewbie