434 字
2 分钟
Apache 中文乱码修复
问题描述
在局域网内搭建 Apache 文件服务器时,启用目录索引功能(Directory Listing)后,中文文件名的文件和文件夹显示为乱码,无法正常识别。
环境信息:
- 系统:Debian 12 / Ubuntu 22.04
- Apache 版本:Apache 2.4.x
- 问题场景:开启
Indexes选项的文件目录
问题原因
Apache 默认的目录索引功能使用 ISO-8859-1 字符集,不支持 UTF-8 或 GBK 编码的中文文件名,导致浏览器解析时出现乱码。
解决方法
步骤一:修改 Apache 配置文件
编辑 Apache 主配置文件,添加 IndexOptions 指令指定中文字符集:
# Debian/Ubuntu 系统sudo echo "IndexOptions +Charset=GB2312" >> /etc/apache2/apache2.conf
# CentOS/RHEL 系统sudo echo "IndexOptions +Charset=GB2312" >> /etc/httpd/conf/httpd.conf或者手动编辑配置文件:
sudo vim /etc/apache2/apache2.conf # Debian/Ubuntusudo vim /etc/httpd/conf/httpd.conf # CentOS/RHEL在文件末尾添加:
IndexOptions +Charset=GB2312步骤二:重启 Apache 服务
# Debian/Ubuntusudo systemctl restart apache2
# CentOS/RHELsudo systemctl restart httpd步骤三:验证配置
- 访问 Apache 服务器目录页面
- 检查中文文件名是否正常显示
- 浏览器查看页面源码,确认
<head>部分包含正确的字符集声明
其他说明
可选方案
如果使用 GB2312 仍有问题,可以尝试 UTF-8 字符集:
IndexOptions +Charset=UTF-8关闭目录索引(替代方案)
如果不需要目录列表功能,可以直接关闭:
<Directory /var/www/html> Options -Indexes</Directory>注意事项
- 配置文件位置:不同发行版的 Apache 配置文件路径可能不同
- 生效方式:修改配置后必须重启服务才能生效
- 浏览器缓存:如仍显示乱码,尝试清除浏览器缓存
- 系统 locale:确保系统 locale 支持中文
参考资料
Apache 中文乱码修复
https://blog.xeu.asia/posts/apache-chinese-encoding/