gpt4 book ai didi

php - 如何使用 PHP 解码 MySQL 文本?

转载 作者:行者123 更新时间:2023-11-29 09:43:20 24 4
gpt4 key购买 nike

在此示例中,我如何对来自 MySQL 的文本进行编码?

这是使用 utf8mb4_unicode_ci 在 MySQL 中文本的样子: $text = '维斯瓦夫';

到目前为止我已经尝试过:

header("Content-Type: text/html; charset=ISO-8859-1");

echo htmlentities($text);
echo '</br>';
echo html_entity_decode($text);
echo '</br>';
echo htmlspecialchars_decode($text);
echo '</br>';
echo htmlspecialchars_decode($text, ENT_NOQUOTES);
echo '</br>';
echo utf8_encode($text);
echo '</br>';
echo utf8_decode($text);
echo '</br>';
echo mb_convert_encoding($text, 'ISO-8859-1', 'UTF-8');
echo '</br>';
echo iconv('UTF-8', 'ISO-8859-1', $text);
echo '</br>';
echo mb_convert_encoding($text, 'UTF-8', 'ISO-8859-1');

结果:

Wies³aw
Wies³aw
Wies³aw
Wies³aw
Wies³aw
Wies?aw
Wies?aw

Wies³aw

期望:

维斯瓦夫

最佳答案

Grrrr.. 不要使用任何这些功能。相反,请正确配置 MySQL。

好:utf8mb4_unicode_ci——这是一个“排序规则”;它意味着字符集utf8mb4

  • 客户端中有 UTF-8 字符。 (显然,你这样做,因为你有一个 stoke-l)。
  • 告诉MySQL客户端正在使用utf8mb4。最好在建立连接时执行此操作。 PHP 有 mysqliPDO。每个详细信息:http://mysql.rjweb.org/doc.php/charcoll#php
  • 将列(以及可选的表和数据库)声明为CHARACTER SET utf8mb4。让我们看看 SHOW CREATE TABLE 看看现在是否可以。

如果这样做之后,你会得到

Wiesław  -- Mojibake
Wies?aw -- question mark
Wies -- truncation
Wies�aw -- black diamond

然后转到Trouble with UTF-8 characters; what I see is not what I stored以获得进一步的建议和调试。

十六进制应为57 69 65 73 C582 61 77
如果您得到 57 69 65 73 C385 E2809A 61 77,那么您就有“双重编码”。

关于php - 如何使用 PHP 解码 MySQL 文本?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56158733/

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