2012-09-07 34 views
3

檢索數據時,我插入數據(包括法國字符),使用SQL插入我的數據庫爲它工作正常:如何在正確的編碼從MySQL使用JDBC

CREATE TABLE Categories(code_interne_c varchar(100) primary key, 
          description varchar(100)); 

    INSERT INTO Categories VALUES ('01','Matières premières'); 
    INSERT INTO Categories VALUES ('02','Articles de conditionnement'); 
    INSERT INTO Categories VALUES ('03','Consommables production'); 
    INSERT INTO Categories VALUES ('04','Produits de nettoyage'); 
    INSERT INTO Categories VALUES ('05','Réactifs'); 

當我使用mysql命令行它的工作原理罰款(如你看到它的正常和預期輸出)太:

mysql> select * from categories; 
    +----------------+-------------------------------------------+ 
    | code_interne_c | description        | 
    +----------------+-------------------------------------------+ 
    | 01    | Matières premières      | 
    | 02    | Articles de conditionnement    | 
    | 03    | Consommables production     | 
    | 04    | Produits de nettoyage      | 
    | 05    | Réactifs         | 
    +----------------+-------------------------------------------+ 
    14 rows in set (0.00 sec) 

但是當我使用JDBC檢索數據:

public static String testreqchar(){ 
    try { 
     Statement st = cx.createStatement(); 
     ResultSet rs = st.executeQuery("select * from categories"); 
     rs.next(); 
     return rs.getString(2)+"|| and test French accent characters : é ô ê à è û "; 
    } catch (SQLException ex) { 
     Logger.getLogger(Methodes.class.getName()).log(Level.SEVERE, null, ex); 
     return null; 
    } 
} 
public static void main(String a[]) { 

      System.out.println(testreqchar()); 
} 

這就是我得到在我的IDE接口和一個輸出:

MatiŠres premiŠres|| and test French accent characters : é ô ê à è û 

我不知道是什麼問題。

Mysql 5.5.27 set on UTF-8 as charset on Win server 2008 R2 French 
    mysql-connector-java-5.1.21 
    JDK 1.7 Running on win 7 pro French. 
+0

到目前爲止我可以正式宣佈這不是IDE編碼問題,但它是一個Mysql或JDBC問題。 –

回答

2

useUnicode=true&characterEncoding=UTF8放在連接字符串的末尾。看樣本,

 Connection conn = DriverManager.getConnection 
     ("jdbc:mysql://localhost/bug_utf8?useUnicode=true&characterEncoding=UTF8" 
 Connection conn = DriverManager.getConnection 
     ("jdbc:mysql://localhost/bug_utf8?useUnicode=true&characterEncoding=UTF8" 
+0

仍然是一樣的東西:s –

+0

@Papa_Jay檢查你的IDE的UTF-8設置。如果您的應用程序是Web應用程序,您還可以檢查您的瀏覽器字符編碼。 –

+0

它是一個Java桌面應用程序,IDE是Netbeans 7.2,在更改終端Charset時無法找到任何選項。 –

相關問題