问题标签 [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 投票
1 回答
1883 浏览

java - Detecting a utf8mb4 charset requirement

We have a mySQL DB that only supports utf8. But we are getting some data feeds that require utf8mb4 for storing in mySQL. How can we detect (in Java) if a string will require utf8mb4 charset?

0 投票
0 回答
79 浏览

java - “不正确的字符串值:”Java & MySQL

我正在处理一些 Twitter 文本,并且在尝试写入数据库时​​出现以下错误:

不正确的字符串值:'\xF0\x9F\x98\x96\xF0\x9F...'

我读到应该将文本字段设置为 uft8mb4 并且我已经这样做了,但仍然出现错误。关于可能发生的事情有什么想法吗?

0 投票
1 回答
746 浏览

mysql - Which data type and collation for full UTF8 support in MySQL

I'm going to store data (mostly Wikipedia page titles) in a table, that can contain characters for which full UTF8 is needed. The schema I'm using is

As you can see, name is only 191 characters long. When using larger values, then MySQL refuses the creation of UNIQUE KEY name because such keys can only be 767 bytes long. What are my questions:

  • has name_encoded to be at least TEXT to fully store an URL-encoded (in PHP rawurlencode) UTF8 string? (I think an 255 byte long string could be represented by a 3060 character long URL in worst case - 255 chars x 4 bytes x 3 chars for encoded representation)
  • does it matter which collation I use for name_encoded (I think not, because URL-encoded they should fit into latin)
  • which data type and collation should I use for name to store at least 255 characters with full UTF8 support and to create an UNIQUE KEY nevertheless (I'd like to use a collation which allows native language sorting)

BTW: I'm using MySQL 5.6 Percona on Debian Wheezy

0 投票
8 回答
256319 浏览

mysql - 错误 1115 (42000):未知字符集:'utf8mb4'

我有一个 MySQL 转储,我尝试使用以下方法进行恢复:

但是,这引发了错误:

这是第 3231-3233 行:

我正在使用 MySQL 5.1.69。我该如何解决这个错误?

0 投票
1 回答
703 浏览

php - PHP 5.2.7 是否支持 utf8mb4

我有两台服务器分别运行以下版本的 PHP 和 MySQL

服务器 1:

服务器 2:

随着 MySQL 版本的更新,MySQL 可以处理utf8mb4_general_ci

因此,在服务器 2的情况下,所有特殊字符(如 ','' 等)都插入数据库中,没有转义斜杠。

但是来到服务器 1

特殊字符没有按原样插入,它显示以下方式It\'s 而不是 It's

所以我怀疑PHP版本是否有所作为?

我在两台服务器上使用同样配置的Codeigniter 。

0 投票
1 回答
259 浏览

php - 使用php和MySql处理单引号和双引号插入问题的简单有效方法是什么

我主要使用Php 5.4+ 和 MySql 5.5+ 版本。我在所有项目中都使用Codeigniter

我面临的问题是

有时(在某些生产服务器上)当 POST 变量包含 ' 或

虽然 php 和 CI 有一个很好的工具来处理这些带有addlashesmysql_escape_sequence等的字符串

  1. 为用户发布的每个可能的变量检查这些条件并不容易

  2. 每次我们必须使用addslashes Ex: It\'s 并且在给出输出时我们必须再次应用stripslashes 来输出It's。但是对于较大的值很难处理。

  3. 由于数据库将数据保存为它,因此很难搜索这些字符串。

经过几天的挣扎,我发现使用utf8mb4_general_ci优于utf8

因此,我确保 CI 的 Database.php 具有以下内容

我还将各个列的数据类型更改为“ LONGTEXT ”,并将其排序规则更改为“ utf8mb4_general_ci

令我惊讶的是,他们为一些服务器工作。

但仍然在某些服务器上,我发现了同样的问题。即使我确保服务器配置与那些工作服务器匹配,这也有点令人沮丧。

所有 php 和 mysql 开发人员如何使用此场景?你采取了哪些预防措施?

请推荐!!

0 投票
1 回答
926 浏览

mysql - 错误 1062 (23000):重复的条目“?” 对于具有两个不同条目的键 'PRIMARY'

我正在尝试将包含大量日文汉字字符的表从 SQLite 导入 MySQL。我尝试插入数据的表如下所示:

当我尝试

我得到了下一个错误:

为什么查找''它显示为''?

我认为它可能与 UTF8 编码有关,所以我按照此链接的说明将所有 Db 和表重新配置为 utf8mb4 。

这是mysql的配置:

在那之后没有任何变化......有什么想法吗?

谢谢

此致

0 投票
1 回答
1505 浏览

python - 如何使用python+MySQLdb创建utf8mb4数据库,mysql命令行已经显示utf8mb4,但数据库还是utf8

我在win7系统下使用Mysql5.6、Mysqldb_1.2.4、python_2.7.3。正如标题所说,我通过更改字符集修改了 Mysql 的配置文件 my.ini。

重启mysql服务后,我使用Mysql命令行:

在此处输入图像描述

当我在 mysql 工作台中创建数据库时,我使用这个排序规则——utf8mb4_unicode_ci:

在此处输入图像描述

但是,我明白了:

在此处输入图像描述

我真的很想知道如何创建一个 utf8mb4 数据库,因为我需要修复 emoj 字符插入数据库的问题,我认为如果我可以创建一个 utf8mb4 数据库就可以解决这个问题。

0 投票
1 回答
14501 浏览

java - MySQL 更改为 utf8mb4 后,从服务器收到字段 '224' 的错误未知字符集索引

我已将我们的服务器 MySQL 数据库更改为使用 utf8mb4,因为我们需要支持表情。我已按照Mathias Bynens的How to support full Unicode in MySQL databases文章中的说明进行操作。唯一的区别是我没有从 utf8 更改。

这是配置:

这是 MySQLSHOW VARIABLES输出:

在我重新启动 MySQL 和我的应用程序后,控制台打印了如下错误日志:

登录到我的 CMS 或 API 调用都不起作用。它给了我上面的错误,我无法用谷歌搜索任何解决方案。

为了修复错误,下一步该怎么做?

0 投票
2 回答
2165 浏览

mysql - 当 Perl 错误地说:“utf8mb4 不是已编译的字符集”时,我怎样才能`DBI->connect()` 连接到 MySQL?

我开始依赖的一个旧 Perl 脚本( mytop ) 在 MySQL 字符集上出现问题。

回报:

$DBI::errstr

然而 ,SHOW CHARSET;两者都揭示了utf8utf8mb4mysql/charsets/Index.xml只显示了utf8

我发现的一种解决方案是进行编辑mysql/charsets/Index.xml以进行更改:

<charset name="utf8"><charset name="utf8mb4">

这实际上适用于 perl 脚本,但不幸的是从某些 MySQL 客户端(如 MySQL Workbench 和 PHPMyAdmin)中删除utf8SHOW CHARSET;禁用。

我还能如何解决此错误?

显然utf8mb4已经编译并可用,尽管有错误。我尝试在中添加utf8mb4别名,<charset name="utf8">但这Index.xml也不起作用。


这是我试图过去的相关数据库连接代码:


以下是相关my.cnf设置: