使用WampServer和Java将土耳其语字符写入MySQL

时间:2012-12-25 18:26:22

标签: java mysql character-encoding wampserver turkish

我的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”排序规则。我的Wamp Server版本是2.2。

table

table structure

我可以使用PHPMyAdmin sql console编写土耳其语字符,但不能使用我的Java代码。我该怎么做才能克服这个问题?提前谢谢。

2 个答案:

答案 0 :(得分:2)

这里没有任何内容可以告诉驱动程序以UTF-8编码字符串。您只是使数据库期望UTF-8,然后驱动程序以其他编码对您的字符串进行编码,并且数据库会引发错误。

你没有显示url是什么,但它应该是这样的:

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

然后你可以删除它:

PreparedStatement p = con.prepareStatement("SET NAMES utf8");
p.executeUpdate();

答案 1 :(得分:1)

对于其他人的好处,请检查以下答案

将这些行添加到my.cnf或my.ini:

 [client]
 default-character-set=utf8


[mysql]
default-character-set=utf8


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

有关详细信息,请查看this