2014-03-25 2 views
5

간단히 내가하면 내가 404 enter image description here리눅스 찾을 수 없습니다 오류

을 얻기 때문에 파일 이름에 특수 문자가있는 경우 내 웹 서버에서 호스팅되는 파일을 다운로드 할 수 없습니다 퍼트 olá.txt라는 파일을 만듭니다. 올바른 URL을 찾지 못한 것 같습니다. 나는 그것을 다운로드 할 수있는 가능한 모든 방법을 시도했다 :

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

와 나는 항상 아파치 톰캣 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= 
+1

'echo -n olá | od -An -tx1','echo $ LANG'도 마찬가지입니다. –

+0

또한'locale'의 출력이 유용 할 수 있습니다.'tomcat'을 실행하는 사용자와 자신 모두로 할 수 있다면 가장 좋을 것입니다 –

+0

@WalterTross 질문이 –

답변

2

당신은 당신의 server.xml의 <connector ... /> 태그에이를 추가해야 할 수도 있습니다 Tomcat 용 :

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을 만들고 URL에 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 인코딩 된 파일을 제공 가능합니다.

+0

(qu estion updated) 나는 그것이 인코딩 된 것 같아서 적어도 server.xml에 있고 404 에러 이미지는 utf8 인코딩 된 이름을 제공한다는 것을 의미합니까? –

+0

수정 된 답변을 귀하의 질문에 새 정보에 응답하십시오. 잘하면 이건 그냥 간단한 오타 수정 프로그램입니다. – awiseman

+0

죄송합니다. xml에 올바른 태그가 있었는데 여기에 붙여 넣은 실수였습니다 –

0

문제는 Tomcat 또는 URL 인코딩과 관련이 없으며 실제로는 (또는 파일을 원격 호스트에 보내는 데 사용하는 모든 것)의 인코딩과 관련된 문제 일 수 있습니다.

이 둘이 다르면 "testé"로 보이는 파일을 보내고 동일한 소스에서 다시 가져 와서 "testé"라고 대답하면됩니다. 그러나 파일 시스템에서 파일은 다르게 인코딩 될 수 있습니다 (LANG이 올바르게 설정된 경우).

톰캣에서 파일을 만들고 UTF8 및 URL 인코딩 형식으로 파일을 요청하십시오. 작동하는 경우 FTP 클라이언트에서 파일 이름을 확인하십시오.

+1

나는 실제로 "vi"를 통해 파일을 만들어 테스트했다 : vi testé.txt 나는 그것을 다운로드 할 수 없다. 그러나 만약 내가한다면 : mv testet.txt teste.txt 그것이 효과가 있다고 생각하니? 그 문제는 같을 수도 있겠습니까? –

+0

이러한 테스트는 결정적이지 않을 수 있습니다. Tomcat으로 만들어야합니다. Tomcat 프로세스에 의해 수행된다면 'touch/full/path/to/test.t.txt'의 간단한 실행만으로도 이것이 가능한지 여부를 알 수 있습니다. ** 시스템에서 동일한 증상을 재현 할 수있었습니다 ** 그러나 클라이언트의 Windows 7에서 PuTTY를 사용하고 서버의 Linux OpenSuSE 13.1을 사용해야했습니다. – LSerni

+0

적어도 루트 사용자는 tomcat 사용자 인 것 같습니다. ps auxwww | grep -v grep | grep tomcat 루트 2321을 제공합니다 ... Tomcat 서블릿 컨테이너 –

관련 문제