2014-01-13 46 views
2
Properties properties= new Properties(); 
properties.setProperty("user", login); 
properties.setProperty("password", password); 
properties.setProperty("useUnicode","true"); 
properties.setProperty("characterEncoding","UTF-8"); 
conn = DriverManager.getConnection("jdbc:mysql://" + host + "/" + db, properties); 

String message = "Раунд " + nextRoomId; 

Data.db.executeUpdate("INSERT INTO chat(message) VALUES('" + message + "')"); 

我得到這個:的Java無法插入UTF-8西里爾字符串到MySQL

Раунд 338 

MySQL的配置:

+--------------------------+----------------------------+ 
| Variable_name   | Value      | 
+--------------------------+----------------------------+ 
| character_set_client  | utf8      | 
| character_set_connection | utf8      | 
| character_set_database | utf8      | 
| character_set_filesystem | binary      | 
| character_set_results | utf8      | 
| character_set_server  | utf8      | 
| character_set_system  | utf8      | 
| character_sets_dir  | /usr/share/mysql/charsets/ | 
+--------------------------+----------------------------+ 

表和數據庫完全UTF-8編碼,我不能從java中插入西里爾字符串,因爲我的表中編碼不好的字符串

我做錯了什麼?

回答

2

執行編輯器(IDE)和javac編譯器使用相同的編碼? javac選項是-encoding UTF-8。否則,字符串文字會出現錯誤的轉換。你可以試試"\u0420\u0430\u0443\u043D\u0434"。如果可行,那麼在.java的編碼中存在一個問題。

+0

編輯器使用utf-8沒有BOM,我該如何編譯utf-8編碼的代碼? ,我試過這樣的:javac -encoding = UTF-8 Main.java,但是-encoding標誌是無效的 –

+1

我試過了javac -encoding utf8 Main.java - 工作很好,謝謝你maan! –

+0

祝賀,UTF -8我看到的越來越多,你使用的是哪個構建系統?在_maven_中,很簡單:pom.xml,編譯器插件,在_ant_中,它是javac任務的一個屬性,對於純粹的獲取:'javac -encoding = UTF -8 ...'。 –

0

試圖改變你的代碼:

Properties properties= new Properties(); 
properties.setProperty("user", login); 
properties.setProperty("password", password); 
properties.setProperty("useUnicode","true"); 
properties.setProperty("characterEncoding","UTF-8"); 
conn = DriverManager.getConnection("jdbc:mysql://" + host + "/" + db, properties); 

String message = "Раунд " + nextRoomId; 
String encMessage = new String(message.getBytes(), "UTF-8"); 

Data.db.executeUpdate("INSERT INTO chat(message) VALUES('" + encMessage + "')"); 
+0

嘗試過,沒有幫助:( –

+0

如果你嘗試打印'message'變量你得到它嗎? – miltos