2017-09-27 2 views
0

"é"가 포함 된 문자열이 있다고 가정 해 봅시다. URL을 통해 다음 컨트롤러로 보내고 싶을 때 문자가 % C3 % A9로 인코딩되고받은 경우 다른 컨트롤러는 "Ã ©"로 디코딩됩니다. 제 질문은 URL을 "é"로 인코딩하는 방법입니다. 다른 컨트롤러에서 수신되면 "é"로 디코딩됩니다. 지금은 수동으로 교체 할 것입니다. 자동으로 특수 문자 (éèà ...)를 사용하는 방법이 필요합니다. 감사합니다.URL을 통해 특수 문자 보내기 Java

+0

['로 선언 URLEncoder'] (https://docs.oracle.com/javase/7/docs/api/java/net/URLEncoder.html) 및 ['URLDecoder'] (https://docs.oracle.com/javase/7) /docs/api/java/net/URLDecoder.html)? – KarelG

+0

[Java에서 HTTP URL 주소 인코딩] 가능한 복제본 (https://stackoverflow.com/questions/724043/http-url-address-encoding-in-java) –

답변

0

불행히도 URL 데이터의 인코딩을 선언 할 방법이 없습니다. 일반적인 인코딩은 ISO-8859-1 또는 Latin1 이었지만, 요즘 UTF-8은 새로운 개발에서 자주 사용됩니다. 그 이유는 서블릿 스펙에서 charset을 지정하지 않으면 ISO-8859-1이 암시되지만 HTML 4.0에서는 URL에 UTF-8을 사용하기를 권장한다는 것입니다.

문제는 URL이 바이트로 구성되어 있고 서블릿 컨테이너가이를 응용 프로그램에 전달하기 전에 Java 문자로 변환하므로 서블릿 컨테이너 수준에서 사용 된 charset을 선언해야한다는 점입니다. 호환성을 이유로, 버전 8.0 이전의 잘 알려진 Tomcat은 기본적으로 URL에 Latin1 문자 세트를 사용합니다. 8.0.0부터 기본값은 "strict servlet compliance"설정에 따라 달라집니다. 그것은 ISO-8859-1 때 진실하고 UTF-8 거짓

참조입니다 : 당신의 정확한 질문에 대한


두 가지 방법이 é 문자를 올바르게 처리하려면

  • 가 변경 서블릿 컨테이너 구성을 떠나 ISO-8859-1에서 URL 인코딩 URL에 UTF-8-
  • 스틱 (é%E9 될 것입니다)하지만, 서블릿 컨테이너