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

mysql - Variant vagrant 使用 wordmove 部署和 utf8mb4 问题

我尝试使用变体 vagrant 和 wordmove 来部署我的工作。

VVV

几次尝试后,我了解到 VVV - mysql 5.5 和我的远程服务器 - mysql 5.1 之间的 mysql 版本不同。问题是utf8mb4 当 wordmove 转储本地数据库时,他们创建了 utf8mb4,当然我 5.1 上的 mysql 远程中断了转储。

有人遇到这个问题或知道如何解决这个问题?

感谢您阅读我糟糕的英语。

0 投票
1 回答
774 浏览

mysql - 从 MySql 使用 perl 获取 utf8mb4 字符串的长度

我写了一个小的 perl 函数,它接受一个字符串并检查它的长度,没有空格。基本代码如下所示:

当我为这个函数提供一个包含特殊字符(如希伯来字母)的字符串时,它似乎工作得很好。当我使用来自 MySql 列的值,字符集为 utf8mb4 时,问题就开始了:在这种情况下,计算的值高于上一个示例中的值。

我可以猜到为什么会发生这种行为:特殊字符以 4 字节的方式写入表中,因此每个字母在 utf8 编码中计算为两个字符。

有谁知道如何解决上述问题,以便我从来自定义为 utf8mb4 的 DB 表的字符串中获得正确数量的字符?

编辑:

有关上述代码的更多信息:

用作函数参数的 DB 列是 VARCHAR(1000) 类型,排序规则为 utf8mb4_unicode_ci。我通过如下配置的 MySql 连接获取行:

示例数据值为“שלום עולם”(在希伯来语中意为“Hello World”)。

1) 调用时foo($request->{VALUE});(其中 VALUE 为 DB 中的列数据),结果为 16(其中每个希伯来字符计为两个字符,忽略它们之间的一个空格)。在这种情况下,Dumper 是:

2)打电话时foo("שלום עולם");

  • 声明时use utf8;,结果为 8(因为此字符串中有 8 个可见字符)。在这种情况下,Dumper (Useqq=1) 是:

    $VAR1 = "\x{5e9}\x{5dc}\x{5d5}\x{5dd}\x{5e2}\x{5d5}\x{5dc}\x{5dd}";

  • 不声明 `use utf8;' 时,结果为 16,类似于从 DB 发送值的情况:

    $VAR1 = "\327\251\327\234\327\225\327\235\327\242\327\225\327\234\327\235";

看起来我需要在开始使用它之前找到一种将接收到的值转换为 UTF8 的方法。

0 投票
3 回答
3723 浏览

mysql - 表情符号未正确存储在 MySQL 5.6 中,排序规则为 utf8mb4

我正在尝试将表情符号存储到我服务器中的数据库中。我使用 AWS EC2 实例作为服务器,我的服务器详细信息如下:

操作系统:ubuntu0.14.04.1

MySQL 版本:5.6.19-0ubuntu0.14.04.1 - (Ubuntu)

数据库客户端版本:libmysql - mysqlnd 5.0.11-dev - 20120503

我使用以下 SQL 在服务器中创建了一个数据库测试和表表情符号:

当我尝试执行以下插入时,出现警告并且数据未正确存储:

插入的行 ID:3

警告:#1366 不正确的字符串值:'\xF0\x9F\x91\x86 \xF0...' 用于第 1 行的列 'text'

文本列中存储的值为:???? ?????????

相同的场景适用于我的本地数据库,并且值已正确存储。除了操作系统(Windows)之外,我本地的几乎所有配置都相似。

0 投票
1 回答
1969 浏览

c# - 如何删除字符串中的任何 utf8mb4 字符

使用 C# 如何从字符串中删除 utf8mb4 字符(表情符号等),以便结果完全符合 utf8。

大多数解决方案都涉及更改数据库配置,但不幸的是我没有这种可能性。

0 投票
1 回答
1164 浏览

javascript - 如何在php和js中获取使用utf8mb4编码的字符长度

我使用支持utf8mb4存储 emoji 的 mysql,但是在 php 或 js 端,我无法获得它们的正确长度,这是我的 textarea 输入 maxlength 的功能。

据我所知,php或web端不支持utf8mb4。有人知道怎么做吗?

我只是在js端得到一个js来解决它,这是由twitter支持的!twitter-text-js

但是如何在 php 端制作它,我没有找到新的 twitter-text-php?我也找到了这个答案,但是如何使用呢?

0 投票
3 回答
458 浏览

mysql - MySql 为表情符号字符串返回错误的结果

我的数据库、表、字段都使用 utf8mb4。我可以很好地将表情符号存储到某些字段中。现在我尝试查询,例如:

SELECT * FROM userWHERE 名称=''

令人惊讶的是,结果是字段名称不同的记录,例如 ''

看起来 mysql 通过长度而不是内容来匹配表情符号字符串。

有什么想法可以解决这个问题吗?非常感谢。

0 投票
2 回答
2100 浏览

php - 带有来自 utf8mb4 的 iconv 的 FPDF

我有一个来自 MySql DB 的字符串,用 utf8mb4 编码。我正在为 PHP 渲染一个带有 FPDF 的 pdf,并尝试使用 iconv 对其进行转换:

这无法告诉我“注意:iconv():错误的字符集,utf8mb4' to不允许从 cp1252' 进行转换”。如果我尝试

我收到“通知:iconv():在输入字符串中检测到非法字符”。

如果没有 iconv,我会得到多个 ascii 字符来代替特殊字符,这并不好。

有没有办法正确输出这个值?

0 投票
0 回答
342 浏览

java - Mysql JDBC 不正确的字符串值和“?” 字符编码

我同时有 2 个问题,我解决了它们,但是当我修复其中一个问题时,另一个问题再次出现,其中一个是我插入一些句子时的字符编码,db 将Ş,İ,ş,ı字符显示为“ ?” 我解决了这个问题,把useUnicode=yes&characterEncoding=utf8

但我的第二个问题,

当我删除characterEncoding=utf8时,问题已解决,但我的第一个问题再次出现。

顺便说一下,我将 db 字符组更改为utf8mb4_general_ci

有什么想法吗?

0 投票
1 回答
959 浏览

mysql - MySQL 可以选择 litral emoji 但不会将 emoji 存储到表中

我正在尝试将一些表情符号字符插入 MySQL 中的表中,但值存储为问号 (????)。

我确保使用正确的utf8mb4编码创建数据库:

在此处输入图像描述 在此处输入图像描述

然后我试图确定MySql是否理解表情符号,所以我这样做了:

然后我这样做了:

我不知道该怎么做才能解决这个问题。。

** 编辑 ** :按照评论中的要求,我运行了以下命令:

0 投票
1 回答
20886 浏览

python - 使用 SQLAlchemy 和 pymysql,如何设置连接以使用 utf8mb4?

我发现(很难)MySQL 的 UTF8 字符集只有 3 个字节。一些研究表明,我可以通过更改表以利用utf8mb4排序规则并获得完整的 4 字节 UTF 来解决此问题。

我已经这样做了。我的数据库、表和列都已被ALTER编辑为使用此字符集。但是,如果我的数据的 unicode 代码点大于 U+FFFF,我仍然会收到此消息:

我发现我有以下设置:

collation_server是通过对 进行更改来设置的my.cnf。我的问题是如何更改连接?我目前使用 SQL Alchemy 和 pymysql 连接到数据库,如下所示:

通过 SQL Alchemy 连接时,utf8_general_ci我可以做些什么来更改 from ?utf8mb4_general_ci