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