2

Wampサーバーに問題があります。トルコ語の文字を含むクエリを実行すると、次のエラーが発生します。

SEVERE: Incorrect string value: '\xE7l? ya...' for column 'body' at row 1
java.sql.SQLException: Incorrect string value: '\xE7l? ya...' for column 'body' at row 1

これが私のJavaコードです:

Class.forName("com.mysql.jdbc.Driver");
con = DriverManager.getConnection(url, user, password);
PreparedStatement p = con.prepareStatement("SET NAMES utf8");
p.executeUpdate();
PreparedStatement ps = 
        con.prepareStatement("INSERT INTO duyurular values (?, ?, ?, ?)");
ps.setInt(1, 0);
ps.setString(2, title);
ps.setString(3, body);
ps.setInt(4, writer);
ps.executeUpdate();

書き込もうとしているデータベースとテーブルはすべて「utf8_turkish_ci」照合に設定されています。私のWampServerのバージョンは2.2です。

テーブル

テーブル構造

PHPMyAdmin sqlコンソールを使用してトルコ語の文字を書くことはできますが、Javaコードを使用して書くことはできません。これを乗り越えるにはどうすればよいですか?前もって感謝します。

4

2 に答える 2

2

ここには、UTF-8で文字列をエンコードするようにドライバーに指示するものは何もありません。データベースにUTF-8を期待させるだけで、ドライバーは文字列を他のエンコードでエンコードし、データベースはエラーをスローします。

あなたはあなたが何であるかを示していませんurlが、それは次のようになっているはずです:

jdbc:mysql:///dbname?useUnicode=true&characterEncoding=utf-8

次に、これを削除できます。

PreparedStatement p = con.prepareStatement("SET NAMES utf8");
p.executeUpdate();
于 2012-12-26T12:15:04.013 に答える
1

他の人の利益のために、以下の答えを確認してください

次の行をmy.cnfまたはmy.iniのいずれかに追加します。

 [client]
 default-character-set=utf8


[mysql]
default-character-set=utf8


[mysqld]
default-character-set=utf8
character-set-server=utf8

詳細については、こちらを確認してください

于 2012-12-27T05:53:16.513 に答える