2011-01-06 10 views
1

私は文字セットとしてkoi8rを使用する単純なJava クライアントプログラムを作成しようとしており、失敗し続けます。MySql Jdbcコネクタローカリゼーションの問題

Class.forName("com.mysql.jdbc.Driver"); 
Connection conn2 = DriverManager.getConnection ("jdbc:mysql://localhost:3306/test","root",null); 
Statement stmt = conn2.createStatement(); 
int result; 
result = stmt.executeUpdate("SET CHARACTER SET koi8r"); 

stmt = conn2.createStatement(); 
result = stmt.executeUpdate("DROP TABLE IF EXISTS װֱֱֲֳֹּ, t1, t2"); 
stmt.close(); 
assertEquals(0, result); 

私は、スクリプトファイルにこれらのコマンドを入れると

com.mysql.jdbc.exceptions.jdbc4.MySQLSyntaxErrorException: You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near '???????, t1, t2' at line 1 

を取得し、それは私がネットワークを盗聴し、私が見た

SET CHARACTER SET koi8r 
DROP TABLE IF EXISTS װֱֱֲֳֹּ, t1, t2 

正常に動作しますmysqlクライアントを使用してそれらを実行していますjdbcコネクタは??????サーバーに、私は接続にいくつかの設定が不足していると思うので。 実際に私は(setEncoding、setCharactersEncoding、setConncetionCollat​​ion ...)しようとしましたが、それでも失敗しました。

+0

こんにちは私はkoi8rについてよく分かりませんが、このリンクは役に立ちます。 http://www.fileformat.info/info/charset/KOI8-R/index.htm – Ankit

答えて

3

ネットワーク経由で文字を転送するために使用するエンコーディングをJDBCドライバに伝える必要があります。つまり、プラットフォームのデフォルトのエンコーディングにデフォルト設定されています。これはあなたの場合はUTF-8ではありません。

あなたはJDBCのURLに次の2つのクエリパラメータを追加することによってこれを行うことができます。

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

the documentationを参照してください。