PHP json 编码和 Node.js 解码utf8mb4_unicode_ci字符串

PHP json encode and Node.js decode utf8mb4_unicode_ci strings

提问人:Fifi 提问时间:1/6/2023 最后编辑:Fifi 更新时间:1/6/2023 访问量:159

问:

在我的服务器上,数据库是编码的,我正在编写一个 API 来提供 JSON 中的数据。 PHP 函数只接受 .utf8mb4_unicode_cijson_encodeutf8

我无法构建完整的链:

strings encoded in utf8mb4_unicode_ci => utf8 => json => API => JavaScript => strings encoded in utf8mb4_unicode_ci

例如$str = "Linéaire 😀";

从 到 我已经尝试了 PHP 函数,并分别返回:utf8mb4_unicode_ciutf8utf8_encode(str)mb_convert_encoding($str, 'UTF-8', 'Windows-1252')

  • "Lin\u00c3\u00a9aire \u00f0\u009f\u0098\u0080"
  • "Lin\u00c3\u00a9aire \u00f0\u0178\u02dc\u20ac"

这两个函数不会返回相同的结果。我不知道该选择哪一个。 此外,我不知道如何在 JavaScript 中取消转义客户端的字符串。

PHP 节点:.js JSON UTF-8 UTF8MB4

评论

0赞 Jared 1/6/2023
是内部 Mysql UTF8 编码变体。它与客户端交互无关。由于您登陆了该查询,因此您将从数据库获取 UTF8 数据。无需其他操作。只是,你没事。毕竟,这就是 UTF8 的创建目的 - 忘记编码转换。而且你不需要在客户端取消转义,只需.utf8mb4_unicode_ciSET NAMES 'utf8'print json_encode($sth->fetchAll());let data = JSON.parse(raw_json);
0赞 Fifi 1/6/2023
@Jared 如果我不转换数据,我就不能使用 .该函数返回错误。utf8json_encode()JSON_ERROR_UTF8
0赞 Jared 1/6/2023
连接到 DBMS 后,运行查询,DBMS 将返回后续查询的 UTF8 数据。SET NAMES 'utf8'

答: 暂无答案