원인이 무엇 java.io.CharConversionException 와 EOF 또는 isHexDigit 메시지 in Tomcat?

StackOverflow https://stackoverflow.com/questions/105551

  •  01-07-2019
  •  | 
  •  

문제

이 예외는 고추의 생산 catalina 로그에 간단한'getParameter()'호출합니다.

WARNING: Parameters: Character decoding failed. Parameter skipped.

java.io.CharConversionException: EOF
    at org.apache.tomcat.util.buf.UDecoder.convert(UDecoder.java:82)
    at org.apache.tomcat.util.buf.UDecoder.convert(UDecoder.java:48)
    at org.apache.tomcat.util.http.Parameters.urlDecode(Parameters.java:411)
    at org.apache.tomcat.util.http.Parameters.processParameters(Parameters.java:393)
    at org.apache.tomcat.util.http.Parameters.processParameters(Parameters.java:509)
    at org.apache.tomcat.util.http.Parameters.handleQueryParameters(Parameters.java:266)
    at org.apache.catalina.connector.Request.parseParameters(Request.java:2361)
    at org.apache.catalina.connector.Request.getParameter(Request.java:1005)
    at org.apache.catalina.connector.RequestFacade.getParameter(RequestFacade.java:353)
    at javax.servlet.ServletRequestWrapper.getParameter(ServletRequestWrapper.java:158)

나 때로는:

java.io.CharConversionException: isHexDigit
    at org.apache.tomcat.util.buf.UDecoder.convert(UDecoder.java:87)
    at org.apache.tomcat.util.buf.UDecoder.convert(UDecoder.java:48)
    at org.apache.tomcat.util.http.Parameters.urlDecode(Parameters.java:411)
    at org.apache.tomcat.util.http.Parameters.processParameters(Parameters.java:393)
    at org.apache.tomcat.util.http.Parameters.processParameters(Parameters.java:509)
    at org.apache.tomcat.util.http.Parameters.handleQueryParameters(Parameters.java:266)
    at org.apache.catalina.connector.Request.parseParameters(Request.java:2361)
    at org.apache.catalina.connector.Request.getParameter(Request.java:1005)
    at org.apache.catalina.connector.RequestFacade.getParameter(RequestFacade.java:353)
    at javax.servlet.ServletRequestWrapper.getParameter(ServletRequestWrapper.java:158)
도움이 되었습니까?

해결책

그냥 가설을 세워 여기에.처럼 보인다는 URL-디코딩 매개 변수는 그 값이 실패(URL 을 인코딩을 의미한 인코딩을 어떤 문자를 사용하여%XX 또%XXXX 표기 XX 또는 XXXX 은 진수 코드의 캐릭터에서 ISO-8859-1 또는 유니코드).첫 번째 경우에 오류가 있기 때문에 일어나는 많지 않지 진수 문자를 후%문자입니다.두 번째 경우에는 이 될 수 있기 때문에 일어나는 문 후%특지 진수.

다른 팁

다른 것을 조사하는 URIEncoding 에 Tomcat"커넥터"를 구성합니다. 한 경우에 UTF-8 인코딩된 페이지를,그것은 인코딩합니다 URL 을 바이트 UTF-8,다음 URL 을 인코딩의 바이트는 필요합니다.그러나,기본적으로,Tomcat 생각하는 바이트는 ISO-8859-1,는 문제가 발생할 수 있습니다.

역도 진실:는 경우 페이지에서 ISO-8859-1,Tomcat's URIEncoding 로 설정되었습니다 UTF-8,비슷한 오류가 발생할 수 있습니다.

여기에는 유용한 토론 문제에 대해서 이 지역: Charset 에 함정 JSP/Servlet 컨테이너

제가 시작한 이 오류를 받을 때 사용자를 보내는'%'통해 ajax 요청을 합니다.밝혀 나지 않았을 탈출하기 전에 매개 변수를 만드는 요청을 합니다.료 작성까지 이 시나리오의과정에서 이 블로그 게시물

그것은 또한 수 이(Wikipedia):

가 존재하는 표준이 아닌 인코딩에 대한 유니코드 문자:%uxxxx,xxxx 유니코드 표시된 값을 네 가지로 진수 자리입니다.이 동작은 지정하지 않은 모든 RFC 고 거부되었으로 W3C.세 번째 에디션의 ECMA-262 여전히 포함 탈출(문자열)기능을 사용하는 이 구문,하지만 또한 에 encodeuri(uri)로 변환하는 기능을 UTF-8%로 인코딩되는 각 octet.

그래서 될 수 있는 사용 escape 함수에서 자바스크립트,하지만 이후 버전의 Tomcat 는 엄격한은 이러한 것들에 대해(5.5.17 이 슬라이드는 인코딩),만 지금은 당신이 시작하는 예외를 참조하십시오.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top