2011-03-16 5 views
1

중국어와 일본어 같은 비 ASCII 문자가있는 URI 인코딩 문제에 직면하고 있습니다. "隐私权 정책"과 같은 문자를 제공하는 경우 올바른 URI가 아닌 것 같습니다. 어떤 포인터라도 도움이 될 것입니다. 여기에 코드 스 니프가 있습니다URI 인코딩 문제

String path ="c:\隐私权政策.txt"; 

File f = new File(path); 

URI uri = f.toURI(); 

System.out.println(uri); 

uri = new URI("file", null, uri.getPath(), null, null); 

System.out.println(uri); 

나는 여기에 뭔가가 없습니까? 당신의 도움을 주셔서 감사합니다.

+1

"적절한 URI를 만들지 못했습니다"는 의미는 무엇입니까? – musiKk

답변

1

나는 귀하의 컴파일러가 \隐을 이스케이프 문자로 취급하려고 시도하고 있다고 생각합니다. 물론 유효한 탈출구는 아닙니다.

사실, 백 슬래시 문자는 URI의 경우 2.4.3 절의 RFC 2396에 따라 유효하지 않습니다. 게이트웨이 및 기타 수송 에이전트가 때때로 문자를 수정하는 것으로 알려져 있기 때문에

다른 문자는 제외, 또는 그들이 구분 기호로 사용된다. 포워드 슬래시 자동으로

unwise  = "{" | "}" | "|" | "\" | "^" | "[" | "]" | "`" 

그러나, 일부 시스템들 (예컨대 IIS)는 백 슬래시 변환한다.

나는 코드를 실행하려고했지만 결국 MyEclipse를 추락시킨 많은 오류가 발생 했으므로 이것이 유일한 문제는 아닙니다.

0

@ Lord Torgamus가 맞습니다. 그래서 나는 백 슬래시를 슬래시로 바 꾸었습니다. try와 catch (netbeans가 제안한)를 사용하여 서라운드 문을 작성한 다음 효과가있었습니다.

try { 
     uri = new URI("file", null, uri.getPath(), null, null); 
    } catch (URISyntaxException ex) { 
     Logger.getLogger(Main.class.getName()).log(Level.SEVERE, null, ex); 
    } 

콘솔 출력 :

run: 
file:/c:/隐私权政策.txt 
file:/c:/隐私权政策.txt 
BUILD SUCCESSFUL (total time: 0 seconds) 
+0

@ Lord Torgamus와 Roger, 도움에 감사드립니다. 방금 문자 标题로 시도하고 다시 새 슬래시를 사용하여 URI에 새 문자를 받고 있어요. (이 경우에는 % C2 % A0이 추가됩니다.) 바이트 값 자체가 잘못되었습니다. 어떤 생각 ?? – mark

0

문제는 해결책이 손으로 "/"또는 "\"또는 "파일을"제거를 기반으로 보편적 아니라고이다. Here은 컴퓨터 독립적 인 솔루션입니다.