我正在使用 mysql dbms来存储来自维基百科的页面。我在my.cnf文件中使用指令将字符集编码设置为utf-8
(维基百科编码):
[mysqld]
character_set_server = utf8
使用'chararacter set utf8'
属性定义创建了我的数据库。
我还通过以下方式更改了mysqld客户端的字符集编码:
'charSet=utf8'
属性。'set names utf8'
但是我注意到mysql服务器用其他字符替换了一些字符。
例如,它将á
替换为a
。
更新
我运行了show variables like '%char%'
命令,确保character_set_client
和character_set_set
都是utf8
。
如何在我的数据库中存储正确的字符?谢谢!
答案 0 :(得分:2)
尝试在数据库网址中指定编码:
url="jdbc:mysql://localhost:port/DBNAME?characterEncoding=UTF-8"
以下是有关我的答案的更多信息:
以下内容摘自MySQL文档(http://dev.mysql.com/doc/refman/5.0/en/connector-j-reference-charsets.html):
几个月前我遇到过类似的问题。我在MySQL上检查了character_set_server的默认值(使用“mysqld --verbose -help”命令)。 这是latin1。转换从JDBC驱动程序发送到服务器的所有字符串 自动从本机Java Unicode表单到客户端字符 编码,包括使用Statement.execute()发送的所有查询, Statement.executeUpdate(),Statement.executeQuery()以及所有 PreparedStatement和CallableStatement参数与排除 使用setBytes(),setBinaryStream()设置的参数, setAsciiStream(),setUnicodeStream()和setBlob()。
设置字符编码
客户端之间的字符编码 并在连接时自动检测服务器。你指定了 使用服务器的character_set_server在服务器上进行编码 版本4.1.0和更新版本。驱动程序自动使用编码 由服务器指定。覆盖自动检测到的 在客户端编码,使用中的characterEncoding属性 用于连接服务器的URL。允许多个字符集 要从客户端发送,请使用UTF-8编码 将utf8配置为默认服务器字符集,或者通过 配置JDBC驱动程序以通过characterEncoding使用UTF-8 属性。