UTF-8字符不支持

时间:2014-09-09 13:08:41

标签: java mysql utf-8

我正在尝试按如下方式在数据库中添加行:

String query = "update Mutable e set e.Name = "Благодаря";
Statement s;
s.execute(query);

但它更新为??????在数据库中。我将此名称设置为俄语字符串。 但是如果我在MySQL查询浏览器中运行相同的查询,那么它会正确更新名称。 我无法找到原因。

2 个答案:

答案 0 :(得分:1)

此问题已解决。问题出在my.cnf文件中。 在my.cnf文件中,默认字符集是latin1。我改为UTF8并且工作正常。

答案 1 :(得分:0)

  1. 尝试

    "更新可变设置e.Name =' \ u0411 \ u043b \ u0430 \ u0433 \ u43e \ u00434 \ u0430 \ u0440 \ u044f'";

    这种转义为ASCII的转义删除了一个问题:java源文本的编码必须与javac编译器使用的编码相同。

  2. 然后很容易在具有非西里尔语编码的Windows或IDE控制台中将结果显示为false。像你一样检查数据库中的结果。

    您可以检查间接值:

    System.out.println("Okay: " + !fieldValue.contains("?"));
    
  3. 验证连接字符串是否类似于:

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

    确保驱动程序通信使用UTF-8。