我正在使用 mysql dbms存储来自Wikipedia的页面。我已utf-8使用指令在my.cnf文件中将字符集编码设置为(维基百科编码):
utf-8
[mysqld] character_set_server = utf8
并使用'chararacter set utf8'属性定义创建了我的数据库。
'chararacter set utf8'
我还通过以下方式更改了mysqld客户端的字符集编码:
'charSet=utf8'
'set names utf8'
但是我注意到mysql服务器用其他字符替换了一些字符。
例如,它替换á为a。
á
a
更新
我已经运行的命令show variables like '%char%'确保这两个character_set_client和character_set_set的utf8。
show variables like '%char%'
character_set_client
character_set_set
utf8
如何在数据库中存储正确的字符?谢谢!
尝试在数据库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配置为默认服务器字符集,或者配置JDBC驱动程序以通过characterEncoding属性使用UTF-8。
从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配置为默认服务器字符集,或者配置JDBC驱动程序以通过characterEncoding属性使用UTF-8。
几个月前,我遇到了类似的问题。我在MySQL上检查了character_set_server的默认值(使用“ mysqld –verbose –help”命令)。是拉丁语1。