2013-02-14 4 views
0

Apache Commons의 URLCodec을 사용하여 '1º'와 같은 데이터를 디코딩하는 중 하나의 문제가 있습니다. '1?'로 디코딩됩니다.Apache Commons의 URLCodec이 데이터를 디코딩하고 물음표를 물음표 (?)로 바꿉니다.

이 문제에 대한 해결책이 있습니까? .

난 코드 아래 사용 시도하기 전에

문자열 decodedData = 새로운 URLCodec() 디코딩 (데이터 "ISO-8859");

아래 코드를 사용해 보았습니다. 그러나 그것은 도움이되지 못했습니다.

문자열 decodedData = 새 URLCodec(). decode (data, "UTF-8");

답변

2

설명서에 따르면, 디코딩 기능은 표준 URL을 받아 들여 그 값을 디코딩하는 것입니다. www-form-urlencoded 인코딩 된 값은 지정된 ASCII 값 집합 만 가질 수 있습니다.

귀하의 질문에 www-form-urlencoded의 유효한 범위에 포함되지 않은 문자가 포함 된 URL 값을 제출할 것을 제안합니다.

대답은 다음과 같습니다. 나는 당신이 올바르게 www-form-urlencoded가 아닌 값을 디코딩하려하고 있다고 믿습니다. 이것이 문제의 근원입니다.

당신이 준 값 : 숫자 1 인 1º, '남성 순서 지시자'(이 StackOverflow 항목을 편집하는 것이 왜곡되지 않는다고 가정). 남성 수위 표시자는 10 진수 값 186으로 16 진수 값 00BA입니다.

인코딩되지 않은 데이터로 시작한다고 가정하면이 두 문자 시퀀스의 www-form-urlencoded 값은 UTF-8을 사용하는지 아니면 ISO-8859-1을 사용하는지에 따라 달라집니다. 다음은 각각의 인코딩 된 버전입니다.

인코딩 된 양식을 가져 와서 디코더로 전달하면 인코딩되지 않은 양식을 다시 받아야합니다. 그러나 인코딩되지 않은 버전을 가져 와서 디코딩하려고하면 어떤 일이 발생하는지에 대한 정의가 없습니다. 정의되지 않았기 때문에 실제 구현 및 실제 결과는 다를 수 있습니다. 아마 유효하지 않은 인코딩으로 예외를 던져야 할 것입니다.하지만 그 중 하나가 보장되지는 않습니다.

+0

답변 해 주셔서 감사합니다. 이 캐릭터는 이전에 작동했습니다. 이제 양식 데이터를 디코딩 할 때 문제가 발생합니다. –