2010-08-12 66 views
2

我寫了一個需要運行一些包含非英文字符(波斯語)的mysql INSERT查詢的JSP代碼。我首先運行兩種類型的查詢,一種是靜態應用程序安裝查詢,另一種是用戶輸入。執行這兩個查詢後,非英文字符被導入爲「?」因爲我在應用程序本身和phpMyAdmin中檢查它們!JSP:在mysql查詢中執行非英文字符

我試圖執行連接後,這些查詢,但我並沒有幫助:

SET NAMES utf8 
SET CHARACTER SET utf8 
SET SESSION collation_connection = 'utf8_general_ci' 

什麼問題?我該如何解決它?

回答

2

執行這兩個查詢後,沒有英文字符被導入爲「?」因爲我在應用程序本身和phpMyAdmin中檢查它們!

因此,數據庫(或更具體地說,JDBC驅動程序)在INSERT期間沒有使用UTF-8。

通常,數據庫的JDBC驅動程序應該足夠聰明,可以使用數據庫和/或表指定的編碼來存儲數據。但在某些情況下,您還必須在連接字符串中指定字符編碼。這在MySQL JDBC驅動程序的情況下是正確的,因爲它不使用數據庫指定的編碼,而是使用客戶端指定的編碼。如何配置它應該已經在JDBC驅動程序文檔中得到了解答。在例如MySQL中,你可以讀取它here

jdbc:mysql://localhost:3306/db_name?useUnicode=yes&characterEncoding=UTF-8

也就是說和無關的問題,你其實應該儘量avoid原始的Java代碼中的JSP文件。這隻會導致未來的另一類問題。

+0

它的工作!非常感謝你! – RYN 2010-08-12 15:16:58

+0

不客氣。 – BalusC 2010-08-12 15:18:20