문제

우리는 UTF-8을 기대하는 웹 서비스를 사용합니다. 우리가 클라이언트에서 사용하는 프레임 워크는 Apache Axis2입니다. 우리는 웹 서비스를 호출하고 비누 바디에는 UTF-8의 문자열이 포함되어 있습니다. 문제는 신체가 "이중 인코딩"인 것처럼 보인다는 것입니다. 즉, 우리는 캐릭터 'Å'을 가지고 있습니다. UTF-8에서 'Å'의 UTF-8 표현은 C3 A5이지만, 우리는 (이중) 인코딩 된 값이 C3 83 C2 A5임을 로그에서 볼 수 있습니다.

비슷한 문제를 경험 한 사람이 있습니까?

도움이 되었습니까?

해결책

웹 서비스를 어떻게 부르는지는 확실하지 않습니다. 웹 서비스의 메소드가 문자열을 취합니까? 그렇다면 Java에서 당신의 줄은 어떻게 생겼습니까? Java의 모든 문자열은 UTF-16 인코딩되어 있습니다. 각 바이트를 가져 와서 문자로 바꾸어 UTF-8 이진 표현을 문자열로 변환하는 경우 문제입니다.

당신이 호출하는 방법이 어떻게 보이는지, 어떻게 부르는지 보여줄 수 있다면 그것은 많은 도움이 될 것입니다.

가치가있는 것에 대해, 나는 과거에 아무런 문제가없는 ASCII 현악기와 축을 사용했습니다. 나는 이것이 축 자체보다는 당신이 그것을 사용하는 방법에 문제가된다고 의심하지만, 나는 틀린 것으로 판명되지만 :)

편집 : 귀하의 의견을 바탕으로 웹 서비스에 도달하기 전에 HTML 양식 데이터를 수신하는 데 문제가있는 것 같습니다. 사용자가 "Å"을 양식에 입력 한 경우 Eclipse를 디버그 할 때 볼 수있는 것입니다. 잘못된 데이터를 웹 서비스에 넣는 경우 다른 쪽에서 나쁜 데이터를 얻는 것은 놀라운 일이 아닙니다. 나는 당신이 달리는 것을 제안합니다 Wireshark 보다 바로 그거죠 브라우저가 원시 바이트와 지정하는 컨텐츠를 인코딩하는 측면에서 브라우저가 보내는 것. 내 생각에 귀하의 웹 서버가 ISO-8859-1로 취급하고 있지만 실제로 UTF-8입니다.

양식에서 문자열을 올바르게 얻으면 웹 서비스에 전달하는 데 전혀 문제가 없다고 생각합니다.

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