1

我正在使用mysql dbms 来存储来自维基百科的页面。utf-8我已使用指令在 my.cnf 文件中将字符集编码设置为(维基百科编码):

[mysqld]
character_set_server = utf8

'chararacter set utf8'并使用属性定义创建了我的数据库。

我还通过以下方式更改了 mysqld 客户端的字符集编码:

  • 'charSet=utf8'在初始化我的 jdbc 驱动程序时插入属性。
  • 查询'set names utf8'

但是我注意到 mysql 服务器用其他字符替换了一些字符。

例如,它替换áa.

更新

我已经运行了命令show variables like '%char%',确保两者character_set_clientcharacter_set_set都是utf8.

如何在我的数据库中存储正确的字符?谢谢!

4

1 回答 1

2

尝试在 DB URL 中指定编码:

url="jdbc:mysql://localhost:port/DBNAME?characterEncoding=UTF-8"

以下是有关我的答案的更多信息:

以下内容来自 MySQL 文档(http://dev.mysql.com/doc/refman/5.0/en/connector-j-reference-charsets.html):

从 JDBC 驱动程序发送到服务器的所有字符串都会自动从原生 Java Unicode 格式转换为客户端字符编码,包括使用 Statement.execute()、Statement.executeUpdate()、Statement.executeQuery() 发送的所有查询以及所有PreparedStatement 和 CallableStatement 参数,不包括使用 setBytes()、setBinaryStream()、setAsciiStream()、setUnicodeStream() 和 setBlob() 设置的参数。

设置字符编码
连接时自动检测客户端和服务器之间的字符编码。对于服务器版本 4.1.0 和更高版本,您可以使用 character_set_server 在服务器上指定编码。驱动程序自动使用服务器指定的编码。要覆盖客户端自动检测到的编码,请使用用于连接到服务器的 URL 中的 characterEncoding 属性。要允许从客户端发送多个字符集,请使用 UTF-8 编码,方法是将 utf8 配置为默认服务器字符集,或者通过 characterEncoding 属性将 JDBC 驱动程序配置为使用 UTF-8。

几个月前我遇到了类似的问题。我检查了 MySQL 上 character_set_server 的默认值(使用“mysqld --verbose --help”命令)。这是拉丁语1。

于 2013-02-06T21:06:07.677 回答