在 CentOS 上运行 Apache 出现乱码,通常不是 Apache 本身坏了,而是字符编码配置或文件编码不一致导致的。下面按最常见原因给你梳理一下:
比如你写的是 GBK 文件,但浏览器按 UTF-8 解析。
检查方法:
file index.html
如果显示:
index.html: ISO-8859 text
说明不是 UTF-8。
✅ 解决:
iconv -f gbk -t utf-8 index.html > index.utf8.html
mv index.utf8.html index.html
即使文件是 UTF-8,Apache 默认可能发:
Content-Type: text/html; charset=ISO-8859-1
浏览器就会乱码。
✅ 解决(推荐):
编辑 Apache 配置:
vi /etc/httpd/conf/httpd.conf
添加或修改:
AddDefaultCharset UTF-8
然后重启:
systemctl restart httpd
这是最容易忽略的。
✅ 在 <head> 里必须有:
<meta charset="UTF-8">
或老写法:
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
如果是 PHP:
用编辑器另存为 UTF-8 无 BOM
在 PHP 文件最前面加:
header("Content-Type:text/html; charset=utf-8");
或在 php.ini:
default_charset = "UTF-8"
如果乱码来自数据库内容:
SHOW VARIABLES LIKE 'character%';
确保是:
utf8 / utf8mb4
CREATE DATABASE test DEFAULT CHARSET utf8mb4;
如果你是说 终端里看文件乱码:
echo $LANG
应该是:
zh_CN.UTF-8
如果不是:
localectl set-locale LANG=zh_CN.UTF-8
<meta charset="UTF-8">AddDefaultCharset UTF-8header("Content-Type: text/html; charset=utf-8")如果你愿意,可以把:
file 文件名发给我,我可以直接帮你定位是哪一层出的问题。