PHP中文乱码需统一UTF-8编码:一、文件保存为UTF-8无BOM;二、PHP顶部加header('Content-Type: text/html; charset=utf-8');三、HTML中写;四、配置服务器默认字符集为UTF-8;五、数据库连接设utf8mb4。

如果您在浏览器中运行PHP代码时出现中文乱码,通常是由于字符编码设置不一致导致。以下是解决此问题的步骤:
一、确保PHP文件保存为UTF-8无BOM格式
PHP源文件本身的编码必须与后续声明的编码一致,若文件以GBK或含BOM的UTF-8保存,浏览器将无法正确解析中文字符。
1、使用支持编码设置的编辑器(如VS Code、Notepad++、Sublime Text)打开PHP文件。
2、在编辑器中查找“编码”或“Encoding”选项,确认当前编码显示为UTF-8无BOM。
立即学习“PHP免费学习笔记(深入)”;
3、若显示为UTF-8 with BOM、ANSI或GBK,选择“另存为”,在保存对话框中明确选择UTF-8无BOM编码并覆盖原文件。
二、在PHP代码中设置正确的HTTP响应头
服务器返回给浏览器的内容需通过HTTP头明确告知字符集,否则浏览器可能按默认编码(如ISO-8859-1)解析,导致乱码。
1、在PHP脚本最顶部(任何输出之前)添加以下语句:
2、header('Content-Type: text/html; charset=utf-8');
3、确保该行代码位于所有echo、print、HTML输出及空白符之前,否则会触发“headers already sent”错误。
三、在HTML中声明正确的meta字符集
即使HTTP头已设置,部分浏览器仍会参考HTML内的meta标签进行二次判断,因此需在页面
中显式声明。1、在PHP输出的HTML结构中,找到
标签内部。2、插入标准meta声明:。
3、避免使用过时写法如,优先采用简洁的charset属性形式。
四、检查Web服务器默认字符集配置
Apache或Nginx可能全局设置了默认字符集,覆盖PHP单独设置,造成冲突。
1、对于Apache服务器,打开httpd.conf或站点对应的.conf文件。
2、查找AddDefaultCharset指令,将其值修改为AddDefaultCharset UTF-8或直接注释该行。
3、对于Nginx服务器,检查server块中是否含有charset指令,确保其值为charset utf-8;,且未被其他location块覆盖。
五、验证数据库连接与查询编码(如涉及MySQL)
若PHP从MySQL读取中文数据后输出乱码,问题可能出在连接层编码未同步,而非页面渲染环节。
1、在mysqli_connect()或PDO连接建立后,立即执行字符集设置。
2、使用mysqli:调用$mysqli->set_charset("utf8mb4");(推荐utf8mb4而非utf8)。
3、使用PDO:在DSN中加入charset=utf8mb4,例如:mysql:host=localhost;dbname=test;charset=utf8mb4。











