问题标签 [utf8mb4]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
0 回答
762 浏览

mysql - MySQl - 从 latin1 到 utf8 的版本上的字符串值不正确

所以我们最初为我们的 MySQL 数据库使用了 latin1(很久很久以前),我们正试图在更广泛的全球推广之前转换为 UTF8,但我在转换时遇到了问题。这是我的 MySQL:

我们得到的错误是:

我们使用的方法基本上是通过这里描述的: http ://www.percona.com/blog/2013/10/16/utf8-data-on-latin1-tables-converting-to-utf8-without-downtime-or -双重编码/ 任何想法都会很棒。(另外,由于我不是 MySQL 方面的专家,我不确定您需要什么样的数据,所以请让我知道您是否需要其他任何数据。)

更新

我试过了

我尝试使用 utf8mb4,如下所述。在切换到 utf8mb4(我可能会保留)之后,地址的更改仍然产生了同样的问题。

更新 2 因此,我尝试查看转换字符串本身以查看发生了什么,并注意到一些非常奇怪的事情:

所以看起来 utf 不是正确的编码?o_O 因为我正在处理地址,所以我能够查找它,并且该地址似乎在斯德哥尔摩,并且应该是与 latin1 匹配的“Högbergsgatan 97”。我尝试了瑞典字符编码,但这似乎也失败了:

所以我想看看我能做些什么来纠正这个问题。

另外,请注意我之前忘记声明我使用的是 MySQL 5.6(如果这有什么不同的话)

0 投票
1 回答
3365 浏览

java - 如何将 UTF-8mb4 转换为 UTF-8?

我正在使用 docx4j 将 .docx 文件转换为 html,然后将该数据保存到 MySQL 数据库中。不幸的是,我们遇到了障碍。当我们转换一个包含任何以 utf8mb4 编码的字符的文档,然后尝试将该数据提交到我们的 MySQL 服务器时,我们会遇到一个通用 JDBC 异常,它指出它不知道如何解析 utf8mb4 字符。

错误 pool-3-thread-20 org.hibernate.util.JDBCExceptionReporter - 第 1 行的列 'u_content' 的字符串值不正确:'\xEF\xBF\xBD???...'

我没有将我们的 MySQL 服务器升级到 5.5 的“许可”,因此该修复程序已失效。

在 Java 中,我可以以某种方式将 utf-8mb4 转换回 utf-8 并将所有 utf-8mb4 字符转换为 � 或其他什么?

0 投票
1 回答
19090 浏览

character-encoding - MySQL - 更新时无效的 utf8mb4 字符串

我的问题与这里发现的几乎一模一样

MySQL - 1300 - 更新时无效的 utf8 字符串

没有提出解决方案,并且该人的帮助(创建临时表)似乎没有帮助。这是我正在使用的选择语句:

当我尝试运行以下更新命令时,我得到:

我尝试通过以下方式设置线路,都产生相同的错误:

我还查看了http://jonisalonen.com/2012/fixing-doubly-utf-8-encoded-text-in-mysql/看看是否可能是双重编码问题,但这些都不起作用,我一直得到相同的字符串错误。

此外,我查看了https://mathiasbynens.be/notes/mysql-utf8mb4以帮助完成转换步骤,但 utf8mb4 和 utf8 导致完全相同的问题。(起初我认为这是一个 utf8 的东西,所以我切换到了 utf8mb4,当我仍然遇到同样的问题时,我知道有一个更深层次的问题)

如您所见,正在发生一些奇怪的事情。查看我的 show create address 表,我可以验证字符集是否设置正确:

此外,您可以在我的实例中看到我的字符变量是正确的:

我怎么到这里了

因此,提供有关该问题的一些背景信息可能会有所帮助,以防万一它是导致问题的背景。

我有一个最初设置为 latin1 编码所有内容的数据库。然后我运行以下代码:

切换到 blob 然后返回到 varchar 的原因是正常的推荐过程。(www.percona.com/blog/2013/10/16/utf8-data-on-latin1-tables-converting-to-utf8-without-downtime-or-double-encoding/)

让我知道这是否有帮助,以及是否可以提供更多信息。我使用的是 MySQL 5.6,所以理论上它应该可以更好地处理事情,但谁知道呢。由于只有 4 行,我可以手动更新每一行,但理论上存在更大的潜在问题,而且由于我实际上还有很多列要查看,所以最好确保我有一个实用的方法来处理这些情况,以防我得到很多行的东西。

0 投票
1 回答
1963 浏览

mysql - 数据库的字符集、表的字符集和列的字符集之间的关系?不同的字符集会导致任何性能问题吗?

我正在使用 ASP.net 开发一个网站,我的数据库是 MYSQL。在那里用户可以提交文章。这个网站走向国际,所以我不想将语言限制为英语。

所以我决定了几件事。如果我做出了错误的选择,请指导我。

1) 我选择 utf8mb4 作为数据库字符集。因为它是 UTF8 的改进版本,用于存储更多字符。我做出了正确的选择吗?我的意思是我只有几个需要使用 utf8mb4 的表。那么我应该使用 Latin1 作为数据库字符集吗?

2)我不知道上述字符集使用哪种排序规则。我决定使用 utf8mb4 swedish_ci。或者我应该使用通用 Ci 还是其他?

3) 在我的表格中,大多数表格不需要 utf8mb4 字符集。拉丁语 1 瑞典语将完成这项工作。那么即使数据库在另一个字符集和排序规则中,我也可以在特定字符集和排序规则下维护选定的表吗?

4) 我可以将 utf8mb4 字符集用于表中以 Latin1 swedesh 作为字符集的特定列吗?

如果那些可以做数据库字符集,表字符集和列字符集之间的关系是什么?

不同的字符集会导致任何性能问题吗?

非常感谢。

0 投票
4 回答
42511 浏览

mysql - 在 MySQL 中使用 utf8mb4

为了utf8mb4在 MySQL(5.6.11)中使用 4 字节,我在my.ini文件中设置了以下变量(my.cnf未找到)。此文件位于Windows XP 上名为Application Data( ) 的隐藏文件夹中。C:\Documents and Settings\All Users\Application Data\MySQL\MySQL Server 5.6它在安装目录下不可用。

然后发出以下命令,

仍然显示以下列表。

在此处输入图像描述

从图片本身可以清楚地看出,有几个变量仍在使用 3-byte utf8


在此之前,已发出以下命令以对数据库本身进行相应的更改。

并且在所述数据库中的每个表上也发出了以下命令。


然而,一些变量尚未设置为所述字符集以及排序规则的原因是什么?什么不见​​了?

在执行了上面指定的每个任务后,系统(操作系统)本身就会重新启动。

0 投票
3 回答
20837 浏览

mysql - 迁移 MySQL UTF8 到 UTF8MB4 的问题和疑问

我试图将我的 UTF8 MySQL 5.5.30 数据库转换为 UTF8MB4。我看过这篇文章https://mathiasbynens.be/notes/mysql-utf8mb4但有一些问题。

我做了这些

最后一个是用 62 个表手动完成的,其中一个给了我这个警告

13:08:30 ALTER TABLE bradspelold.games CONVERT TO CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci 101289 行受影响,2 个警告:1071 指定的密钥太长;最大密钥长度为 767 字节 1071 指定的密钥太长;最大密钥长度为 767 字节记录:101289 重复:0 警告:2 3.016 秒

  1. 这是一个问题吗?我能做些什么来解决它?

下一步是

  1. 我不确定命令,为什么有 2 个 column_name?
  2. 我应该只在 VARCHAR(191) 列上执行此操作吗?我不认为我有他们中的任何一个?
  3. 你知道更多这样的文章来解释更多的身份细节为什么和如何?

编辑 :

桌上表演游戏

编辑2:

0 投票
1 回答
106 浏览

php - MySQL - 无法添加外键约束 - 拉丁文/西里尔文

这是我最后的选择,因为我已经尝试了所有可以在 Google 和 Stack Overflow 上找到的东西。

在问这个问题之前,我已经彻底搜索了答案。我发现人们从 MySQL 收到相同的错误消息,但他们的解决方案没有做错特定的事情(不同的列类型)。

我有外键的问题,它们相同的类型(varchar(xx),其中 xx 在两种情况下都是相同的长度;NOT NULL),但仍然给我一个错误,PHPMyAdmin 的命令将其描述SHOW ENGINE INNODB STATUS为:

2015-03-24 16:04:21 66c 表 arhiva/privilegija 的外键约束错误:外键
(korisnik_ime)参考 korisnik(ime),外
键(firma_naziv)参考firma(naziv)
):
找不到索引被引用列作为第一列出现的被引用表,或者表中的列类型与被引用表的约束不匹配。

这是我的数据库架构,对非英文名称感到抱歉(顺便说一下,我第一次遇到这个问题时,列名是西里尔字符,但即使在我将它们转换为拉丁文之后 - 你在这里看到的 - 我的问题是解决):

你能指导我解决这个问题的正确方向吗?我认为使用西里尔字符是问题所在,但事实证明问题出在其他地方。

0 投票
1 回答
562 浏览

mysql - mysql utf-8 mb4 数据库中的笑脸是如何编码的?

我将我的 mysql 数据库更改为 utf-8 mb4,以便用户可以从他们的手机/mac 输入笑脸。它可以工作(用户可以输入笑脸,这些笑脸会显示在受支持设备上的网络应用程序中),但每当我查看表格内容(通过终端或 mysql 工作台)时,它会将每个笑脸显示为一个问号。这些笑脸究竟是如何保存的?我假设他们有一个 utf-8 mb4 代码,但有什么办法可以查看这些代码吗?

谢谢!

0 投票
2 回答
3232 浏览

codeigniter - 如何使用 CodeIgniter 将表情符号插入 MySQL

如何将 unicode 字符插入 MySQL 并使用 CodeIgniter 检索它们?有没有什么设置要做。

这是我打印时的查询。

但是,它保存为????.

这是我所做的。CodeIgniter 数据库.php

0 投票
5 回答
243363 浏览

mysql - MySQL 中的 utf8mb4 和 utf8 字符集有什么区别?

MySQLutf8mb4utf8charsets 有什么区别?

我已经知道ASCIIUTF-8UTF-16UTF-32编码;但我很想知道编码组与MySQL Serverutf8mb4中定义的其他编码类型有什么区别。

utf8mb4使用而不是有什么特殊的好处/建议utf8吗?