如何正确地使用jdbc和MySQL设置utf8编码?

5

在我的项目中,JDBC 和 MySQL 运行良好,但涉及到带有重音符号的字符时出现问题。我使用以下 URL 访问数据库:

jdbc:mysql://localhost:3306/dbname?useUnicode=yes&characterEncoding=UTF-8

假设有一个 resultSet = preparedStatement.executeQuery(),然后是 System.out.println(resultSet.getString("text_with_accents"));。数据库中存储的是 àèìòù(注意我已经在数据库及其所有表中设置了正确的编码),但我得到的是 ?????
是否有办法解决这个问题?
2个回答

9

尝试修改您的URL,例如:

url="jdbc:mysql://localhost:3306/dbname?useUnicode=true&characterEncoding=UTF-8" 

& 必须表示为 &


@pr0gma:- 你能检查一下你的my.cnf文件,看看是否有`[client] default-character-set=utf8[mysql] default-character-set=utf8`这段代码吗? - Rahul Tripathi
我没有my.cnf文件。我应该创建一个吗?如果是的话,应该创建在哪里? - pr0gma
@pr0gma:- 它应该存在。您可以参考此链接:https://dev59.com/PG855IYBdhLWcg3whExL 以获取其位置。 - Rahul Tripathi
找到了my.ini文件。仔细检查后发现,该选项已经在客户端和mysql部分都设置好了。 - pr0gma
1
characterEncoding=utf8 --> characterEncoding=UTF-8. - Rick James
在创建数据源时,是否有任何更改可以在运行时设置这些属性,而不是更改连接字符串? - Tobia

0

可能是因为...

  • 您有UTF8编码的数据(很好)
  • SET NAMES latin1生效了(默认,但不正确)
  • 该列被声明为CHARACTER SET latin1(默认,但不正确)

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接