2011-08-17 10 views
0

DBテーブルの列を反映する3つのテキストフィールド(ID、Name、Address)がありますが、そのテーブルにアラビア文字を挿入しようとしていますが、 ?? "
java(SE)を使用してmySQL DBにアラビア文字を挿入する

iamがJDBCを使用してDBに接続しています。
myデータベース情報。 :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それは正しく挿入され、アラビア文字が正しく表示されます。

答えて

4

なぜこの作業を行いますか?宣言されたデータベースの文字セットで文字列を正しくエンコードすることは、mysql JDBCドライバの仕事です。データベースのキャラクタセットをUTF-8に設定し、JDBCオプションを正しく設定して、プレーンな古いStringを単純に挿入します。

+0

正解、文字セットと照合+1 – mKorbel

+0

次のように私はUTF8に私のデータベースの文字セットを変更し、それが動作します現在: サーバキャラクタセット:utf8 Dbキャラクタセット:utf8 クライアントキャラクタセット:utf8 コネクションセット:utf8 ありがとうございます。 –

0

エンコードロジックが正しく動作するかどうかは、txtと同じ正確な値を返す必要があります。textのようになります。

そして:UTF8に接続キャラクタを設定 - JDBCは、/、残りの世話をする必要があります...

関連する問題