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 指令指定中文字符集:

Terminal window
# Debian/Ubuntu 系统
sudo echo "IndexOptions +Charset=GB2312" >> /etc/apache2/apache2.conf
# CentOS/RHEL 系统
sudo echo "IndexOptions +Charset=GB2312" >> /etc/httpd/conf/httpd.conf

或者手动编辑配置文件:

Terminal window
sudo vim /etc/apache2/apache2.conf # Debian/Ubuntu
sudo vim /etc/httpd/conf/httpd.conf # CentOS/RHEL

在文件末尾添加:

IndexOptions +Charset=GB2312

步骤二:重启 Apache 服务#

Terminal window
# Debian/Ubuntu
sudo systemctl restart apache2
# CentOS/RHEL
sudo systemctl restart httpd

步骤三:验证配置#

  1. 访问 Apache 服务器目录页面
  2. 检查中文文件名是否正常显示
  3. 浏览器查看页面源码,确认 <head> 部分包含正确的字符集声明

其他说明#

可选方案#

如果使用 GB2312 仍有问题,可以尝试 UTF-8 字符集:

IndexOptions +Charset=UTF-8

关闭目录索引(替代方案)#

如果不需要目录列表功能,可以直接关闭:

<Directory /var/www/html>
Options -Indexes
</Directory>

注意事项#

  1. 配置文件位置:不同发行版的 Apache 配置文件路径可能不同
  2. 生效方式:修改配置后必须重启服务才能生效
  3. 浏览器缓存:如仍显示乱码,尝试清除浏览器缓存
  4. 系统 locale:确保系统 locale 支持中文

参考资料#

Apache 中文乱码修复
https://blog.xeu.asia/posts/apache-chinese-encoding/
作者
Xeu
发布于
2025-01-03
许可协议
CC BY-NC-SA 4.0