utf-8网址问题

时间:2011-06-30 10:27:38

标签: url tomcat utf-8

我运行了一个tomcat(7)服务器,通过它我尝试通过http访问一些公共文件。文件系统上的一些文件中包含特殊字符。找到没有这些特殊字符的那些。其他的给出了404.例如:

http://localhost:9090/processed/transcoded /Csángó_TÖMEGKERESZTELŐVEL_EGYBEKÖTÖTT_búcsú_Istensegítsfalvá20111053491309424029417_extracted.mp3"

从我发现的网址中的utf-8应该不是问题。我在文件名上尝试了一个url转义函数,结果是:

http://localhost:9090/processed/transcoded/Cs%c3%a1ng%c3%b3_T%c3%96MEGKERESZTEL%c5%90VEL_EGYBEK%c3%96T%c3%96TT_b%c3%bacs%c3%ba_Istenseg%c3%adtsfalv%c3%a120111053491309424029417_extracted%2emp3

......但这似乎也没有解决任何问题。接下来要尝试什么?我不知道问题是什么。它可能与Tomcat设置有关吗?

1 个答案:

答案 0 :(得分:6)

您的URIEncoding="UTF-8"中有<Connector吗?如果是的话,这就是我要做的事情:

  1. 创建一个测试网络应用,其中有一个过滤器拦截对/processed/transcoded/*
  2. 的所有调用
  3. 在该过滤器上放置一个断点,看看你得到了什么。解码后文件名是否有意义?
  4. 尝试使用此路径打开一个新的java.io.File(显然在预先填写本地位置,例如/home/someuser/files/...并假设文件在那里)。
  5. 我认为tomcat不会比上面列出的更多。

    另一种选择是调试Tomcat本身。