2015-02-07 42 views
0

我想從csv文件讀取數據,然後寫入MySql。數據包含外語。如何在Java EE環境中使用MySql處理外來字符

當我試圖將包含日文字符的記錄插入MySql時,出現此錯誤。

"1366Incorrect string value: '\xE6\xB0\xB4\xE7\x9D\x80...' for column 'name' at row 1" 

的SQL語句如下:

INSERT INTO `MerchandiseMaster` (id,name) VALUES ('20000101','JANIE AND JACK水着 鶯茶系 大膽花柄') 

我的CSV文件使用UTF-8編碼和MySQL數據庫架構的字符集是utf8_gerneral_ci

我已經把這些參數,當我通過JDBC(mysql-connector-java-5.1.34-bin.jar)連接到數據庫:

connect = DriverManager.getConnection("jdbc:mysql://localhost/mydata?" 
    + "useUnicode=yes&characterEncoding=UTF-8&user=user123&password=user123."); 

我的問題是:

還有什麼,我很想念正確對待外國字符?

+1

http://dev.mysql.com/doc/refman/5.6/en/faqs-cjk.html#qandaitem-A-11-1-9也許 – 2015-02-07 21:38:33

回答

2

我在一個網站上發現了這個,所以需要注意,但顯然MySQL的UTF-8支持是不完整的。在2010年,他們增加了新的支持,utf8mb4,支持整個UTF-8編碼方案。

添加到你的MySQL配置文件:

[client] 
default-character-set = utf8mb4 

[mysql] 
default-character-set = utf8mb4 

[mysqld] 
character-set-client-handshake = FALSE 
character-set-server = utf8mb4 
collation-server = utf8mb4_unicode_ci 

這裏有一個link to the full article.我還沒有嘗試過這一點,所以先仔細檢驗一切,和讓你的數據庫做任何事情之前備份。

+0

感謝您分享這些信息。但它似乎不是我的問題的原因。我通過將可能接受外語的所有列的字符集更改爲'utf8_gerneral_ci'來解決問題 – TheCoffeeCup 2015-02-08 00:19:42