2011-08-17 82 views
0

我有三個文本域(ID,名稱,地址),它反映了數據庫表中的列我試圖插入阿拉伯字符到該表中,但它顯示爲「??? ??」
使用java(SE)插入阿拉伯字符到MySQL數據庫

iam使用JDBC連接到數據庫
我的數據庫信息。 :MySQL服務器5.5.14社區
服務器字符集:latin1的
Db的字符集:UTF8
客戶端字符集:latin1的
康涅狄格州字符集:latin1的

我嘗試編碼使用下面的代碼串:

private String ArEncode(String text){ 
    String txt=""; 

    try { 

     Charset cset = Charset.forName("utf8"); 
     CharsetEncoder encoder = cset.newEncoder(); 
     CharsetDecoder decoder = cset.newDecoder(); 
     ByteBuffer buffer = encoder.encode(CharBuffer.wrap(text)); 
     txt=buffer.asCharBuffer().toString();   

    } catch (Exception ex) { 
     Logger.getLogger(UserView.class.getName()).log(Level.SEVERE, null, ex); 
    } 
    return txt; 
} 

那麼返回的字符串名爲「txt」插入到數據庫

注:當我嘗試插入值directl y從netbeans插入到數據庫中,它正確插入並且阿拉伯字符正確顯示。

回答

4

你爲什麼要這樣做? mysql JDBC驅動程序的工作是在聲明的數據庫字符集中正確編碼字符串。將數據庫中的字符集設置爲UTF-8,正確設置JDBC選項,然後只需簡單地插入普通的舊字符串即可。

+0

正確答案,字符集和校對+1 – mKorbel

+0

我改變了我的數據庫字符集爲UTF8如下,它的工作原理現在: 服務器字符集:utf8 Db字符集:utf8 客戶端字符集:utf8 連接字符集:utf8 謝謝。 –

0

如果編碼邏輯正常工作,應該返回與texttxt完全相同的值,因此不需要。

和:設置連接字符集爲utf8 - JDBC的會/應該照顧其餘的...