在 Ubuntu 的 Apache2 中出现乱码,通常不是 Apache 本身的 bug,而是字符编码配置或文件编码不一致导致的。下面按常见原因给你一个排查思路。
比如你用 Windows 记事本写了 .html,默认是 GBK,但浏览器按 UTF-8 解析,就会乱码。
✅ 解决:
file -i index.html
如果不是 charset=utf-8,用:
iconv -f gbk -t utf-8 index.html -o index.utf8.html
浏览器只能“猜”,容易猜错。
✅ 在 <head> 里加:
<meta charset="UTF-8">
Ubuntu Apache2 默认可能不是 UTF-8。
编辑配置:
sudo nano /etc/apache2/conf-available/charset.conf
确保有:
AddDefaultCharset UTF-8
启用并重启:
sudo a2enconf charset
sudo systemctl restart apache2
如果你在 000-default.conf 或站点配置里写了:
AddDefaultCharset ISO-8859-1
也会导致乱码。
用编辑器(VS Code / Vim)确认文件是 UTF-8 无 BOM。
在 PHP 最前面加:
header('Content-Type:text/html; charset=utf-8');
mysqli_set_charset($conn, "utf8mb4");
或 SQL:
SET NAMES utf8mb4;
如果你是说 终端里 ls 中文乱码:
locale
如果不是 UTF-8,设置:
sudo apt install locales
sudo dpkg-reconfigure locales
选 en_US.UTF-8 或 zh_CN.UTF-8
<meta charset="UTF-8">AddDefaultCharset UTF-8header('Content-Type: text/html; charset=utf-8')utf8mb4如果你愿意,可以把:
我可以直接帮你精准定位。