gpt4 book ai didi

php - 使用 PHP 操作来自 MySQL 的 utf8mb4 数据

转载 作者:可可西里 更新时间:2023-11-01 06:39:31 24 4
gpt4 key购买 nike

这可能很简单。我发誓我一直在网上寻找答案,但没有找到。由于我的特殊情况有点不典型,我最终决定在这里提问。

我在 MySQL 中有几个表用于中文程序。它需要能够支持每一个可能的汉字,包括字体支持不佳的罕见汉字。表格中的示例单元格可能是这样的:

東菄鶇䍶𠍀倲𩜍𢘐涷蝀凍鯟𢔅崠埬𧓕䰤

为了让它在数据库中正常工作,我必须将编码/排序规则设置为 utf8mb4。到目前为止,一切都很好。不幸的是,当我将相同的字符串提取到 PHP 中时,它被打印成这样:

東菄鶇䍶?倲??涷蝀凍鯟?崠埬?䰤

我怎样才能最终消除剩余的问号并让它们显示为它们应有的 unicode 字形?我在标记中使用 UTF8 编码并作为元标记获得了 php 页面本身。

为什么他们不能互相交流?我做错了什么?

最佳答案

我只是猜测您将表设置为 utf8mb4,但您的连接编码设置为 utf8。你也必须将它设置为utf8mb4,否则MySQL会将存储的utf8mb4数据转换为utf8,后者无法编码“high "Unicode 字符。 (是的,这是 MySQL 的特性。)

在原始 MySQL 连接上,它必须如下所示:

SET NAMES 'utf8mb4';
SELECT * FROM `my_table`;

您必须根据客户端的最佳方式调整它,具体取决于您如何从 PHP(mysql、mysqli 或 PDO)连接到 MySQL。


要真正澄清(是的,为简单起见,使用 mysql_ 扩展,不要在家里这样做):

mysql_connect(...);
mysql_select_db(...);
mysql_set_charset('utf8mb4'); // adapt to your mysql connector of choice

$r = mysql_query('SELECT * FROM `my_table`');

var_dump(mysql_fetch_assoc($r)); // data will be UTF8 encoded

关于php - 使用 PHP 操作来自 MySQL 的 utf8mb4 数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13028537/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com