개발 이야기/Java
SAXException: Invalid byte 2 of 2-byte UTF-8 sequence
시반
2009. 9. 11. 19:25
dom4j를 이용하여 웹서비스에서 데이터를 파싱하는 중에 나온 에러입니다.
JUnit으로 테스트할 때는 이상이 없던터라 데이타가 나오지 않아 깜짝 놀랐네요.
로그를 찾아보니 SAXException: Invalid byte 2 of 2-byte UTF-8 sequence
말 그대로 UTF-8 로 인코딩된 정보가 아니라는 거죠.
당연히 수신측과 송신측의 인코딩 타입은 동일해야 겠죠.
그동안은 보내는 쪽 코딩을 주로 했던터라. 저역시 대부분 UTF-8로 변환하여 보냈습니다만
이번에는 수신할 때가 문제였네요. 아마 그쪽에서 인코딩 타입을 EUC-KR 으로 사용했었나 봅니다.
SAXReader xmlReader = new SAXReader();
xmlReader.setEncoding("EUC-KR");
Document doc = xmlReader.read(inputstream);
이렇게 stream 데이터를 읽기 전에 EUC-KR로 인코딩타입을 명시하니 이상없이 동작하네요.