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
相关产品推荐
相关产品推荐

