我正在尝试按如下方式在数据库中添加行:
String query = "update Mutable e set e.Name = "Благодаря";
Statement s;
s.execute(query);
但它更新为??????在数据库中。我将此名称设置为俄语字符串。 但是如果我在MySQL查询浏览器中运行相同的查询,那么它会正确更新名称。 我无法找到原因。
答案 0 :(得分:1)
此问题已解决。问题出在my.cnf文件中。 在my.cnf文件中,默认字符集是latin1。我改为UTF8并且工作正常。
答案 1 :(得分:0)
尝试
"更新可变设置e.Name =' \ u0411 \ u043b \ u0430 \ u0433 \ u43e \ u00434 \ u0430 \ u0440 \ u044f'";
这种转义为ASCII的转义删除了一个问题:java源文本的编码必须与javac编译器使用的编码相同。
然后很容易在具有非西里尔语编码的Windows或IDE控制台中将结果显示为false。像你一样检查数据库中的结果。
您可以检查间接值:
System.out.println("Okay: " + !fieldValue.contains("?"));
验证连接字符串是否类似于:
"jdbc:mysql:///dbname?useUnicode=true&characterEncoding=utf-8"
确保驱动程序通信使用UTF-8。