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”排序规则。我的 Wamp 服务器版本是 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 回答