【问题标题】:Writing Turkish characters to MySQL using WampServer and Java使用 WampServer 和 Java 将土耳其语字符写入 MySQL
【发布时间】:2012-12-25 18:26:22
【问题描述】:

我的 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 代码。我应该怎么做才能克服这个问题?提前致谢。

【问题讨论】:

  • SQLException 表示您的表/数据库不支持这种字符。请参阅here 以更改您的表以支持 UTF8 值。
  • 我用谷歌搜索了“不正确的字符串值”并得到了很多相关的结果。
  • @rambo-coder 我也用谷歌搜索了错误消息并尝试了一些建议但没有运气。
  • 您是否尝试过使用其他工具或 MySQL 控制台在表中插入?

标签: java mysql character-encoding wampserver turkish


【解决方案1】:

这里没有任何内容可以告诉驱动程序以 UTF-8 编码字符串。您只是让数据库期望 UTF-8,然后驱动程序将您的字符串编码为其他编码,数据库会抛出错误。

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

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

然后你可以删除这个:

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

【讨论】:

    【解决方案2】:

    为了他人的利益,请检查以下答案

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

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

    更多详情请查看this

    【讨论】:

      猜你喜欢
      • 2012-05-13
      • 1970-01-01
      • 2012-06-28
      • 1970-01-01
      • 2014-08-09
      • 2015-01-07
      • 2021-01-18
      • 2010-10-20
      • 2020-10-02
      相关资源
      最近更新 更多