对于非 ASCII 字符的文件名,Linux 未找到错误

标签 linux apache ascii

简单地说,如果文件名中有特殊字符,我无法下载托管在我的网络服务器上的文件,因为我收到 404。 enter image description here

如果我创建一个名为 olá.txt 的文件,我似乎找不到正确的 URL 来下载它。我已经尝试了所有可能的下载方式:

mydomain.com/olá.txt 
mydomain.com/ol%C3%A1.txt

我总是从 Apache Tomcat 7.0.3 收到 404,但如果我将文件名更改为 ola.txt,一切都很好。

我已将 AddDefaultCharset utf-8 添加到 httpd.conf,但问题仍然存在。

我的意思是应该可以下载名称中包含非 ascii 字符的文件,对吧?

更新:我的 server.xml 有:

<Connector URIEncoding="UTF-8" compressableMimeType="text/javascript,text/css" 
     compression="on" compressionMinSize="2048" connectionTimeout="20000"
     noCompressionUserAgents="gozilla, travista" port="8080"
     protocol="HTTP/1.1" redirectPort="8443"/>

更新:

echo -n olá | od -An -tx1 =  6f 6c c3 a1
echo $LANG = en_US.UTF-8

语言环境:

LANG=en_US.UTF-8
LANGUAGE=en_US:en
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=

最佳答案

您可能需要将此添加到 <connector ... />在 Tomcat 的 server.xml 中标记:

URIEncoding="UTF-8"

更多信息:

How to get UTF-8 working in Java webapps?

utf-8 url problem


我在重现这个问题时遇到了麻烦。我在 Ubuntu 12.04.4 LTS 上完成了 Tomcat 7.0.26 的全新安装,创建了 /var/lib/tomcat7/webapps/ROOT/testé.txt ,并成功将该文件提供给我的浏览器,网址为 http://localhost:8080/testé.txt .

这是我在 /etc/tomcat7/server.xml 中的连接器标签:

<Connector port="8080" protocol="HTTP/1.1"
           connectionTimeout="20000"
           URIEncoding="UTF-8"
           redirectPort="8443" />

目前我不能说为什么你的文件不起作用,但我至少可以确认可以使用 tomcat7 提供 UTF-8 编码文件。

关于对于非 ASCII 字符的文件名,Linux 未找到错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22641785/

相关文章:

python - 如何用python获取原始字符?

linux - 非法号码 - Shell 脚本

java - 如何处理通过 Scala/Java ProcessBuilder 发送的 SSH 命令上的空格?

java - jasperrepots-fonts jar 的用途是什么以及如何使用它?

python - 如何在 Wampserver 上设置和运行 Python?

c - 如何在 C 中将 128 位整数转换为十进制 ascii 字符串?

c - 使用 fopen 和 fscanf 将函数从 C 重写为汇编

apache - htaccess - 删除 index.php 并保留一个没有键的变量

linux - 如何在 Neos CMS 中创建新项目?

java - 为什么这显然是 "random"数字打印 "Java is Awesome"