2012-08-07 50 views
2

我在使用My Java應用程序在MySQL中插入日文字符時遇到了問題。
如果我插入這個字符串「今日は」,我得到這個「???」。在UTF-8 MySQL數據庫中插入日文字符串和BoneCP

我的表格和它的字段使用UTF-8。 我不認爲涉及表結構,因爲雖然我從PHP插入相同的字符串,它的工作原理。

CREATE TABLE `pool` (
    `id` int(8) NOT NULL AUTO_INCREMENT, 
    `message` varchar(160) COLLATE utf8_bin NOT NULL DEFAULT '' 
    PRIMARY KEY (`id`), 
) ENGINE=MyISAM DEFAULT CHARSET=utf8 COLLATE=utf8_bin; 

我連接到databose與LIB 「BoneCPConfig」 誰管理我的Connexion池:

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

Properties props = new Properties(); 
props.setProperty("characterEncoding", "UTF-8"); 
props.setProperty("useUnicode", "true"); 

BoneCPConfig config = new BoneCPConfig(props); 
config.setJdbcUrl("jdbc:mysql://" + MYSQL_HOST_NAME + "/" + MYSQL_BASE_NAME); 
config.setMinConnectionsPerPartition(MIN_CONNEXION_PER_PARTITION); 
config.setPartitionCount(PARTITION_COUNT); 
config.setUsername(MYSQL_LOGIN); 
config.setPassword(MYSQL_PASSWORD); 

我做我插入這樣的:

String query = "INSERT INTO pool (message) VALUES(?) "; 

PreparedStatement insertStatement = connection.prepareStatement(query, Statement.RETURN_GENERATED_KEYS); 
insertStatement.setString(1, "今日は"); 
insertStatement.execute(); 

我認爲我的問題是在連接配置,但我不知道該怎麼做: -/ 你有想法嗎?


編輯:

問題解決了,請參閱下面

回答

3

問題是LIB BoneCP誰不使用參數傳遞的財產...... 我把它通過更換:

Properties props = new Properties(); 
props.setProperty("characterEncoding", "UTF-8"); 
props.setProperty("useUnicode", "true"); 

BoneCPConfig config = new BoneCPConfig(props); 
config.setJdbcUrl("jdbc:mysql://" + MYSQL_HOST_NAME + "/" + MYSQL_BASE_NAME); 

附:

BoneCPConfig config = new BoneCPConfig(); 
config.setJdbcUrl("jdbc:mysql://" + MYSQL_HOST_NAME + "/" + MYSQL_BASE_NAME + "?user=" + MYSQL_LOGIN + "&password=" + MYSQL_PASSWORD + "&characterEncoding=utf-8"); 
相關問題