You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

PHP读取MySQL含单引号文本显示乱码问题求助

解决MySQL文本输出到HTML的乱码问题

这是典型的字符编码不匹配导致的乱码,那个奇怪的「锟絭」就是单引号(')被错误解析后的结果。我来一步步帮你搞定:

  • 第一步:确认数据库/表的编码
    先检查你的MySQL数据库、something表以及DESCRIPTION字段的编码,推荐用utf8mb4(支持所有Unicode字符,包括表情符号),至少也要是utf8。可以执行以下SQL命令查看:

    -- 查看数据库编码
    SHOW CREATE DATABASE your_database_name;
    -- 查看表编码
    SHOW CREATE TABLE something;
    

    如果输出里的CHARSET不是utf8系列,记得修改数据库和表的编码。

  • 第二步:设置PHP连接的编码
    在你用mysqli_connect建立数据库连接之后,立刻加这行代码,强制连接使用utf8mb4编码:

    mysqli_set_charset($connection, 'utf8mb4');
    

    这一步是核心!很多乱码都是因为PHP和MySQL连接时没指定正确编码,导致数据传输过程中被错误转码。

  • 第三步:确保HTML页面的编码声明
    在HTML的<head>标签里加上编码元标签,告诉浏览器用UTF-8解析页面:

    <meta charset="UTF-8">
    

    这样浏览器才能正确识别你输出的字符。

  • 第四步:输出时的安全转义(可选但推荐)
    之后输出文本到HTML时,建议用htmlspecialchars转义特殊字符,既能避免XSS攻击,也能确保字符正确渲染:

    echo htmlspecialchars($description, ENT_QUOTES, 'UTF-8');
    

    这里的ENT_QUOTES会同时转义单引号和双引号,第三个参数指定编码为UTF-8,和前面的设置保持统一。

简单说下原因:单引号(')的UTF-8编码是0x27,如果数据库、连接、页面这三者的编码不统一,就会把原本的字节错误解析成其他字符,就出现了你看到的乱码。只要把这几处的编码都统一成UTF-8(或utf8mb4),问题就能解决啦。

内容的提问来源于stack exchange,提问作者user9697902

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.27 06:36:13