gpt4 book ai didi

php - 由于 wamp 上可能不正确的编码/解码,特殊字符未相应显示

转载 作者:行者123 更新时间:2023-11-30 22:06:33 24 4
gpt4 key购买 nike

我有一个正在 build 中的网站,其中显示了用户的帖子。在使用 PHP 5.2.5 和 Apache 2.2.6 的开发服务器(在 Windows XP 上)中,它很好,即,通过将字符集元标记添加到 html 页面的标题部分,特殊字符按原样显示:

<meta charset="utf-8">

然后这样回显:

echo html_entity_decode($postBody, ENT_QUOTES, 'UTF-8');

然后,例如,结果如下:

███─█─────█─███─███─███ █───█─────█─█───█────█ ███─█──█──█─██──██───█ ──█─█─█─█─█─█───█────█ ███─██───██─███─███──█

███─███──███─███─██───█─███─ █───█─█───█──█───█─█──█─█──█ ███─██────█──██──█──█─█─█──█ █───█─█───█──█───█───██─█──█ █───█──█─███─███─█────█─███─

目前,我已经将我的项目上传到一个新的开发服务器(在 Windows7 上),使用 PHP 5.6.29 和 Apache 2.4.23,相同的页面显示如下:

███─█─────█─███─███─███ █───█─────█─█───█────█ ███─█──█──█─██──██───█ ──█─█─█─█─█─█───█────█ ███─██───██─███─███──█

███─███──███─███─██───█─███─ █───█─█───█──█───█─█──█─█──█ ███─██────█──██──█──█─█─█──█ █───█─█───█──█───█───██─█──█ █───█──█─███─███─█────█─███─

在新环境中,我也尝试过:

echo utf8_encode($postBody);

但是没有结果。我还在httpd.conf中添加了:

AddDefaultCharset utf-8

检查了PHP中的default_charset也是utf-8。

但这一切都在静脉中。

我还检查了两台服务器(旧的和新的)MySQL 中的character_set_database,发现是latin1

尽管我自己做了一点尝试,但为什么同一个页面在两个版本中显示不同,我对此毫无意义。导致我遇到此类问题的可能性是什么?我将如何通过解决方案摆脱困境?提前致谢!

最佳答案

PHP 的默认字符集在 Php 5.6 中更改为 UTF-8。请参阅此链接:PHP 5.6 default_charset change may break HTML output .

这意味着自 PHP 5.6 起,需要字符集作为参数的函数的默认字符集默认为 UTF-8。 PHP 还会发送值为 UTF-8 的内容类型 header 。

这可能就是为什么您的代码在切换到 PHP 5.6 后不显示相同输出的原因

如果您要显示的数据是从 MySQL 数据库中获取的,那么您应该将 MySQL 表和数据库的字符集更改为 UTF-8。之后尝试将数据重新输入数据库,以便它以 UTF-8 字符编码存储。

另请参阅:Php Ini Directives

关于php - 由于 wamp 上可能不正确的编码/解码,特殊字符未相应显示,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41529976/

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