Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/62.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java MySQL无法正确存储某些UTF8字符_Java_Mysql_Jdbc_Utf 8_Character Encoding - Fatal编程技术网

Java MySQL无法正确存储某些UTF8字符

Java MySQL无法正确存储某些UTF8字符,java,mysql,jdbc,utf-8,character-encoding,Java,Mysql,Jdbc,Utf 8,Character Encoding,我正在使用mysql数据库管理系统来存储维基百科的页面。在my.cnf文件中,我已使用以下指令将字符集编码设置为utf-8(wikipedia编码): [mysqld] character_set_server = utf8 并使用'characteracter set utf8'属性定义创建了我的数据库 我还通过以下方式更改了mysqld客户端的字符集编码: 初始化jdbc驱动程序时插入'charSet=utf8'属性 查询“设置名称utf8” 然而,我注意到mysql服务器用其他字符替

我正在使用mysql数据库管理系统来存储维基百科的页面。在my.cnf文件中,我已使用以下指令将字符集编码设置为
utf-8
(wikipedia编码):

[mysqld]
character_set_server = utf8
并使用
'characteracter set utf8'
属性定义创建了我的数据库

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

  • 初始化jdbc驱动程序时插入
    'charSet=utf8'
    属性
  • 查询
    “设置名称utf8”
然而,我注意到mysql服务器用其他字符替换了一些字符

例如,它将
a
替换为
a

更新

我已经运行了命令
显示变量,如“%char%”
,确保
字符集\客户端
字符集\客户端
都是
utf8


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

尝试在DB URL中指定编码:

url="jdbc:mysql://localhost:port/DBNAME?characterEncoding=UTF-8"
以下是关于我的答案的更多信息:

以下内容摘自MySQL文档():

将转换从JDBC驱动程序发送到服务器的所有字符串 自动从本机Java Unicode表单转换为客户端字符 编码,包括使用语句.execute()发送的所有查询, 语句.executeUpdate()、语句.executeQuery()以及所有 带排除项的PreparedStatement和CallableStatement参数 使用setBytes()和setBinaryStream()设置的参数的数量, setAscistream()、setUnicode Destream()和setBlob()

设置字符编码
客户端之间的字符编码 服务器在连接时自动检测。您可以指定 在服务器上使用字符\u set\u server for server进行编码 版本4.1.0及更新版本。驱动程序自动使用编码 由服务器指定。覆盖自动检测到的 在客户端编码时,请使用 用于连接到服务器的URL。允许多个字符集的步骤 要从客户端发送,请使用UTF-8编码,或者 将utf8配置为默认服务器字符集,或通过 通过characterEncoding配置JDBC驱动程序以使用UTF-8 财产

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

[1]您使用的是哪种驱动程序?[2] 在设置要存储在数据库中的参数之前,是否使用新字符串([String Object].getBytes(),“UTF-8”)?[1]我使用的是MySQL连接器/J。[2]我尝试了新字符串([String Object].getBytes(),Charset.forName(“UTF-8”),你能从MySQL工作台或类似的工具中插入UTF-8文本吗?如果是这样,那么正如Eran所指出的,它可能与您的连接URL设置有关。是的,我可以使用MySQL Workbench存储utf8字符串。当您运行
show variables
命令时,
character\u set\u server
的值是多少?你试过我下面的建议了吗?