我使用了MySQL数据库管理系统来存储来自维基百科页面。 我设置的字符集编码以utf-8
与指令my.cnf文件(维基百科编码):
[mysqld]
character_set_server = utf8
并与创建我的数据库'chararacter set utf8'
属性定义。
我也改变了字符集编码的启动mysqld的客户端通过:
- 插入
'charSet=utf8'
初始化我的JDBC驱动程序时性能。 - 做一个查询
'set names utf8'
不过我注意到,MySQL服务器替换其他一些字符。
例如它取代á
同a
。
UPDATE
我已经运行的命令show variables like '%char%'
确保既character_set_client
和character_set_set
是utf8
。
我怎么能存储在我的数据库正确的字符? 谢谢!
尝试指定在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服务器上的编码。 该驱动程序会自动使用服务器指定的编码。 要覆盖在客户端自动检测到的编码中,使用的characterEncoding属性中用于连接到所述服务器的URL。 为了允许多个字符集或者通过为默认的服务器的字符集,或通过配置JDBC驱动通过的characterEncoding属性来使用UTF-8配置UTF8被从客户端发送时,使用UTF-8编码,。
我在几个月前遇到了类似的问题。 我(使用“的mysqld --verbose -help”命令)检查了我的MySQL被character_set_server的默认值。 它是处理latin1。