我的图像名称包含重音字母(é、à 等),无法通过 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 列出没有任何问题