MySQL不正确存放一些UTF8字符(MySQL does not store properly s

2019-08-16 19:46发布

我使用了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_clientcharacter_set_setutf8

我怎么能存储在我的数据库正确的字符? 谢谢!

Answer 1:

尝试指定在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。



文章来源: MySQL does not store properly some UTF8 chars