【问题标题】:PHP - String not displayed correctly despite UTF-8 EncodingPHP - 尽管 UTF-8 编码,但字符串未正确显示
【发布时间】:2023-03-05 11:39:01
【问题描述】:

我有一些数据存储在 mysql 的 UTF-8 编码表中。当我在 phpmyadmin 中查看数据时,它显示正确,像这样

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

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

? StatTrak� 翻转刀 |褪色(崭新出厂)

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

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

【问题讨论】:

    标签: php mysql nginx encoding utf-8


    【解决方案1】:

    有两件事需要做:

    1.将查询中的mysql编码设置为UTF-8(我不是说冲突)。
    2.在HTML代码的输出中设置字符编码。

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

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

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

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

    【讨论】:

    • 哦,对不起,你比我快一点,你回复的时候我已经在输入答案了。还是谢谢你。
    • 太棒了!我为此撕毁了我的头发!
    【解决方案2】:

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

    设置名称'utf8'

    这将保持 UTF-8 编码,一切都会正确显示。

    【讨论】:

      猜你喜欢
      • 2023-04-02
      • 1970-01-01
      • 2012-08-09
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-06-02
      相关资源
      最近更新 更多