2010-04-16 3 views

답변

1

utf-16을 기대하지 않는 saxparser에 utf-16 입력을 제공하는 것처럼 보입니다. 데이터를 utf-8로 변환하려고하면 도움이 될 것입니다.

2

16 진수 편집기에서 파일을 확인하십시오.

처음 바이트가 실제로 \xEF\xBB\xBF이고 그 뒤에 문서 자체가 오는 경우 UTF-8 인조 BOM입니다. UTF-8 가짜 BOM이 잘못되었거나 특수 프로그래밍 산으로 파괴해야하는 툴을 생성해야하지만 XML 사양에서는파서가이 바이트 시퀀스를 인식하고 무시하므로 SAX 파서가 호환되지 않는 경우 발길질이 필요해.

만약 실제로 하나 같은 있습니다 을주는 초기 바이트 :

\xC3\xAF\xC2\xBB\xC2\xBF 
\xEF\xBB\xBF\xC3\xAF\xC2\xBB\xC2\xBF 
\xEF\x00\xBB\x00\xBF\x00 
\xFF\xFE\xEF\x00\xBB\x00\xBF\x00 

다음 당신이있어하는 실수를 두 번 인코딩입니다. 이 경우 제대로 작성되지 않았기 때문에 SAX 파서가 불평 할 수 있고 파일의 다른 유니 코드 문자도 엉망이 될 수 있으므로 파일을 만드는 프로그램을 살펴볼 필요가 있습니다. 아마도 문서를 바이트 문자열로 serialize 한 다음 가짜 디코드/인코딩주기를 통해 보내는 것처럼 바보 같은 작업을 수행하고있을 가능성이 있습니다.

파서가 번거로운 바이트 시퀀스를 건너 뛰도록하려는 경우이 접두어를 수동으로 해킹 한 버전으로 피드를 보내야합니다. SAX 파서가 무엇인지 (또는 심지어 어떤 언어로되어 있는지) 알지 못하면 어떻게해야 하는지를 말하기가 어렵습니다.

어쩌면 입력 스트림을 파서에 전달하기 전에 검색 할 수 있습니까? 어쩌면 당신은 파일을 바이트 문자열로 읽어 들여 파서에 초기 바이트를 전달할 수 있습니까? 파서가 옵션을 제공하지 않으면 파일을 바이트로로드해야합니다. 시작 부분을 잘라내어 새 파일에 다시 저장하십시오.

관련 문제