当前位置: 首页 > 面试题库 >

MySQL无法正确存储一些UTF8字符

单于煌
2023-03-14
问题内容

我正在使用 mysql dbms存储来自Wikipedia的页面。我已utf-8使用指令在my.cnf文件中将字符集编码设置为(维基百科编码):

[mysqld]
character_set_server = utf8

并使用'chararacter set utf8'属性定义创建了我的数据库。

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

  • 'charSet=utf8'在初始化我的jdbc驱动程序时插入属性。
  • 进行查询 'set names utf8'

但是我注意到mysql服务器用其他字符替换了一些字符。

例如,它替换áa

更新

我已经运行的命令show variables like '%char%'确保这两个character_set_clientcharacter_set_setutf8

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


问题答案:

尝试在数据库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。

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



 类似资料:
  • 在SpringBoot应用程序中,我有以下配置: 将场景缩小到最小,佐贺类的相关部分: 1-Axon如何安全地管理Jackson忽略、来自类的瞬态和静态属性?我尝试在非状态属性上手动定义,但仍然不起作用。 2-Axon安全地将XStream配置为忽略内部类(主要是作为私有静态final实现的构建器类)? 提前感谢, 仍然没有解决这个问题的运气...

  • 问题内容: 在两台计算机的HTML文件中显示数据库的结果时出现问题。 因此,在一台计算机上它显示的名称是这样的: 数据库的排序规则为,表的排序规则为。 在另一台计算机上,它显示如下(我希望这样): 名称在标签中列出。两种浏览器的语言是英语,并且Html文件在两种环境下都相同,所以我认为这与php.ini文件的字符集或编码有关 我曾尝试更改中的值,但没有任何变化,我在任何地方都找不到答案。 唯一的区

  • 本文向大家介绍Android SharedPreferences存储的正确写法,包括了Android SharedPreferences存储的正确写法的使用技巧和注意事项,需要的朋友参考一下 SharedPreferences 特点 即便是Android小白都知道的SharedPreferences的用法,这是保存数据最简便的方法,但是不处理好的话后期维护将是一个巨大的坑。那么该如何处理好Shar

  • 问题内容: 我有一个存储过程,它检查用户是否已经存在,无论用于电子邮件的输入是什么,它随数据库的第一行一起返回。如果我手动运行select语句,我将得到正确的结果。有什么建议吗? 问题答案: 您的问题无疑在这里: 白衣 您的参数名称与列名称相同。这 可 实际工作,但规则使它这样做可能是怪异。(我认为,如果您更改引号,它可能会起作用)。 但是实际上,您应该做的是将参数重命名为其他名称:

  • 数据库存储引擎是数据库底层软件组件,数据库管理系统使用数据引擎进行创建、查询、更新和删除数据操作。简而言之,存储引擎就是指表的类型。数据库的存储引擎决定了表在计算机中的存储方式。不同的存储引擎提供不同的存储机制、索引技巧、锁定水平等功能,使用不同的存储引擎还可以获得特定的功能。 现在许多数据库管理系统都支持多种不同的存储引擎。 MySQL 的核心就是存储引擎。 MySQL 提供了多个不同的存储引擎

  • 问题内容: 例如,\ b退格键打印为四边形(在下面的示例中显示为[])。但是\ n换行符还可以。 我在Vista(Pro),Python 2.7下运行 香港专业教育学院试图谷歌搜索这个问题,并因此找不到任何相关的东西,这似乎很奇怪,我不知道是否有一些设置或其他可能在我的设置中是错误的。不知道要寻找什么。 问题答案: 我做错了什么或应该寻找什么? 期望退格(特别是工作)是否合理? 不,IDLE不支持