2012-06-07 94 views
11

我無法從我的webservice發送或顯示帶有特殊字符的文本到我的數據庫。在我的eclipse中,我將字符編碼設置爲UTF-8,但它仍然不讓我顯示字符。例如像代碼的簡單打印以下使用System.out.println顯示特殊字符

String test ="привет"; 
System.out.println(test); 

OR

String test ="привет"; 
String query = "insert into communication (`test`) VALUES ('"+ test +"'); 
PreparedStatement preparedStmt1 = con.prepareStatement(query); 
preparedStmt1.executeUpdate(); 

在控制檯上的結果,如果我寄這封信給我的數據庫是??????。我如何得到這個在控制檯上正確顯示,並希望在數據庫中

+0

這是Eclipse控制檯,或sh/CMD?你的控制檯設置了什麼字符集? – atk

+1

日食,如果通過控制檯字符集,你的意思是在Windows>首選項>工作臺設置它設置爲UTF-8。是否有另一種方法分開設置控制檯? – Amanni

回答

1

對,其使用XXI。世紀,我們仍然有諸如字符編碼掙扎......

我的第一個猜測是,要麼?

  1. 源文件編碼可能是錯誤的(你使用像建Maven的工具,它可能需要在那裏設置源編碼),
  2. 您的控制檯編碼可能是錯誤的(您是否在Windows下?默認命令行控制檯默認情況下不是UTF,其本地依賴,但在您可以設置其編碼)
  3. 您的數據庫編碼可能不正確(什麼是表編碼,你可以檢查?)
+0

我將表編碼設置爲utf8的結果仍然相同。就編碼而言,我可以在Android中編程時顯示特殊字符。 – Amanni

9

看看是否有效。

PrintStream out = new PrintStream(System.out, true, "UTF-8"); 
    out.println(test); 

對於DB存儲,以下的字符串顯式編碼爲UTF-8

String newString = new String(test.getBytes(), "UTF8"); 
+0

不,我得到相同的字符 – Amanni

+0

您必須將字符串編碼爲「iso-8859-1」例如:new String(test.getBytes(),「iso-8859-1」); – oczdref

0

可能是你需要你的字符串解碼爲ISO-8859第一個,然後將其編碼爲UTF-8

11

如果您使用的是Eclipse,然後

  1. 右鍵點擊你的項目。
  2. 轉到 「文本 文件編碼」 屬性
  3. 選擇UTF-8

enter image description here

+0

哇,它正在爲我工​​作。 – Sun