在 Centos 7 和 Apache 2.4 中处理 UTF-8 文件名

在 Centos 7 和 Apache 2.4 中处理 UTF-8 文件名

我的图像名称包含重音字母(é、à 等),无法通过 Apache 访问(404 错误)。

我认为这和Apache无关。我检查了配置文件:

添加默认字符集 UTF-8

当我通过 Putty 连接并运行命令“ls -la”列出图像时,重音字母在控制台中被替换为“?”。

以下是可能有帮助的相关信息:

> 回显 $LANG
英文版.UTF-8
> 猫/等/环境
空的文件
> 区域设置
LANG=en_US.UTF-8
LC_CTYPE="en_US.UTF-8"
LC_NUMERIC="en_US.UTF-8"
LC_TIME="en_US.UTF-8"
LC_COLLATE="en_US.UTF-8"
LC_MONETARY="en_US.UTF-8"
LC_MESSAGES="en_US.UTF-8"
LC_PAPER="en_US.UTF-8"
LC_NAME="en_US.UTF-8"
LC_ADDRESS="en_US.UTF-8"
LC_TELEPHONE="en_US.UTF-8"
LC_MEASUREMENT="en_US.UTF-8"
LC_IDENTIFICATION="en_US.UTF-8"
LC_ALL=

我找到了一些教程,但它们适用于 Centos 5/6。

PS:重命名文件是一种可能的解决方案,但就我而言是不可想象的。

答案1

第一的@Simohammedhttc:您使用的名称是正确的!请不要重命名文件。现在是 2016 年。我们拥有所有可用的技术,因此没有人需要因为名称不是英文而阉割某些文件名。

区域设置看起来不错。事实上,putty 在显示非 ASCII 字符时存在问题(即显示 ?),这可能完全是 putty 的问题。最近没有使用 putty,但我记得曾尝试过 putty 设置来纠正它。

我刚刚检查了我当前的 CentOS 7 是否可以顺利地通过 Apache2 提供这个变音符号 URL:

http://<server>/äöü.txt

文本文件再次包含相同的变音符号。浏览器(Safari)显示编码为 UTF-8。将其放入某些 HTML 中也可以:

  • <a href="äöü.txt">äöü.txt</a></td>
  • 当然还有这个:<a href="%c3%a4%c3%b6%c3%bc.txt">äöü.txt</a>

请尝试将图片URL粘贴到浏览器的地址栏中,是否可以直接访问图片。

如果有效,请检查图像链接是如何生成的。看一下源代码:

  • 验证浏览器是否将所有内容识别为 UTF-8。
  • 验证图像 URL 没有被任何中间处理所破坏。

答案2

最后我解决了这个问题,
我安装了 convmv 并在图像文件夹上执行了以下命令:

// -r => 递归
// --notest => 不显示可能的结果,转换文件名
// -f => 来自
// -t => 至
convmv -r --notest -f iso-8859-15 -t utf8 图像文件夹

此问题与在 Windows 环境中创建然后上传到 Centos 服务器的文件有关。

我直接在 Centos 中创建了一个文件名带重音字母的文件,它在 Putty 中列出时没有任何问题。

cd 图片文件夹
触摸练习曲.png
ls -la // 文件 étude.png 列出没有任何问题

相关内容