Php 由于wamp上的编码/解码可能不正确,因此未相应显示特殊字符
我有一个网站正在建设中,在那里显示用户帖子。在使用PHP 5.2.5和Apache 2.2.6的开发服务器(在Windows XP上)中,这是正常的,也就是说,通过在html页面的页眉部分添加charset meta标记,可以按原样显示特殊字符:Php 由于wamp上的编码/解码可能不正确,因此未相应显示特殊字符,php,mysql,apache,utf-8,Php,Mysql,Apache,Utf 8,我有一个网站正在建设中,在那里显示用户帖子。在使用PHP 5.2.5和Apache 2.2.6的开发服务器(在Windows XP上)中,这是正常的,也就是说,通过在html页面的页眉部分添加charset meta标记,可以按原样显示特殊字符: <meta charset="utf-8"> 然后,例如,结果如下所示: ███─█─────█─███─███─███ █───█─────█─█───█────█ ███─█──█──█─██──██───█ ──█─█─█─█─█─
<meta charset="utf-8">
然后,例如,结果如下所示:
███─█─────█─███─███─███ █───█─────█─█───█────█ ███─█──█──█─██──██───█
──█─█─█─█─█─█───█────█ ███─██───██─███─███──█
███─███──███─███─██───█─███─ █───█─█───█──█───█─█──█─█──█
███─██────█──██──█──█─█─█──█ █───█─█───█──█───█───██─█──█
█───█──█─███─███─█────█─███─
目前,我已使用PHP 5.6.29和Apache 2.4.23将我的项目上载到一个新的开发服务器(在Windows7上),其中显示的页面如下:
(一)(一)(一)(二)(一))(二)(二))(三
█───█─────█─█───█────█
███─█──█──█─██──██───█
──█─█─█─█─█─█───█────█
一、二、二、三、四、四、四、四、四、四、四、四、四、四、四、四、四
一、一、二、三、四、四、四、四、四、四、四、四、四、四、四、四、四、四、四、四
█───█─█───█──█───█─█──█─█──█
███─██────█──██──█──█─█─█──█
█───█─█───█──█───█───██─█──█
一、二、二、三、四、四、四、四、四、四、四、四、四、四、四、四、四、四、四
在新环境中,我还尝试了:
echo utf8_encode($postBody);
但这是徒劳的。我还在httpd.conf中添加了:
AddDefaultCharset utf-8
PHP中的默认\u字符集已经过检查,也发现是utf-8
但这一切都是血脉相连的
我还检查了MySQL中的字符集数据库,它位于两台服务器(以前的和新的)中,发现是latin1
尽管我自己也做了一些尝试,但为什么相同的页面在两个版本中显示的不同,我对此毫无意义。有什么可能导致我出现这样的问题,我将如何解决?提前谢谢 PHP的默认字符集在PHP5.6中更改为UTF-8。请参阅此链接: 这意味着自PHP5.6以来,对于需要字符集作为参数的函数,默认字符集是UTF-8。PHP还发送一个值为UTF-8的内容类型头 这可能就是为什么在切换到PHP5.6之后,代码不会显示相同的输出 如果试图显示的数据是从MySQL数据库中获取的,那么应该将MySQL表和数据库的字符集更改为UTF-8。之后,尝试将数据重新输入数据库,以便使用UTF-8字符编码进行存储
另请参见:在PHP5.6中,PHP的默认字符集更改为UTF-8。请参阅此链接: 这意味着自PHP5.6以来,对于需要字符集作为参数的函数,默认字符集是UTF-8。PHP还发送一个值为UTF-8的内容类型头 这可能就是为什么在切换到PHP5.6之后,代码不会显示相同的输出 如果试图显示的数据是从MySQL数据库中获取的,那么应该将MySQL表和数据库的字符集更改为UTF-8。之后,尝试将数据重新输入数据库,以便使用UTF-8字符编码进行存储
另请参见:在“谢谢”中查找“Mojibake”的可能副本中查找“Mojibake”的可能副本,我尚未尝试您的答案。但目前,我在页面中设置了charset,而不是content-type标题。他们不是为我做了同样的事情吗?内容类型头是一个http头,web服务器发送到浏览器。Php>=5.6自动发送此标头。内容类型http头和字符集meta标记都做相同的事情,因此您不需要将meta-charset标记添加到页面谢谢,我还没有尝试使用您的答案。但目前,我在页面中设置了charset,而不是content-type标题。他们不是为我做了同样的事情吗?内容类型标题
echo utf8_encode($postBody);