PHP - 尽管使用UTF-8编码,字符串仍无法正确显示

时间:2015-02-07 19:42:42

标签: php mysql nginx encoding utf-8

我在mysql中的UTF-8 ecoded表中存储了一些数据。当我在phpmyadmin中查看数据时,它会正确显示,如此

★M9刺刀(StatTrak™)|蓝钢(略有磨损)

但是,当我通过print命令将此数据输出到UTF-8编码的文档时,它无法正确显示。它看起来像这样:

? StatTrak�翻转刀|淡化(崭新出厂)

我现在已经在互联网上搜索了一段时间。到目前为止我所做的是我已经设置了默认_charset'在php中使用UTF-8并配置nginx以使用相同的编码。我已经检查过Firefox中的页面信息,并说它是UTF-8编码的,所以这似乎有效。我不明白为什么它还没有正确显示字符。

有谁知道如何解决这个问题?

2 个答案:

答案 0 :(得分:2)

有两件事需要做:

1.在查询中设置mysql编码为UTF-8(我不是指碰撞)  2.在HTML代码的输出中设置characeter编码。

对于mysql,您需要在打开与数据库的连接后立即执行这些查询:

mysqli_query($con,"SET NAMES utf8");
mysqli_query($con,"SET CHARACTER_SET utf8");

要以UTF-8编码的html输出显示您的数据,请在头部使用此元标记:

<html>
   <head>
      <meta charset="UTF-8">
   </head>
<body>
    <?php print("your code here..."); ?>

答案 1 :(得分:0)

我发现了问题所在。在执行查询时,您需要告诉MySQL您要保留UTF-8编码:

SET NAMES'utf8'

这将保持UTF-8编码,所有内容都将正确显示。