简单地说,如果文件名中包含特殊字符,我就无法下载托管在我的网络服务器中的文件,因为我得到了404。
如果我创建一个名为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=
答案 0 :(得分:2)
您可能需要将其添加到server.xml的Tomcat中的<connector ... />
标记:
URIEncoding="UTF-8"
更多信息:
How to get UTF-8 working in Java webapps?
我很难在我的身上复制这个。我在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编码文件是可能的。
答案 1 :(得分:0)
问题可能与Tomcat或URL编码无关,实际上它可能是 FTP连接的编码(或者用于将文件发送到远程的任何问题)的问题主机)。
如果它们不同,你会发送一个你认为是“testé”的文件,然后从同一来源回复它当然会返回“testé”。但是在文件系统上,文件的编码可能会有所不同(如果LANG
设置正确,甚至)。
尝试从Tomcat创建文件并以UTF8和url编码的形式请求它。如果有效,请尝试查看FTP客户端的文件名。