회사에서 내부적으로 만든 XML 파일을 구문 분석하려고합니다. 이 파일은 UTF-16으로 인코딩되어 있지만 필자가 작성한 Python 스크립트에 오류가 발생합니다 (아래 참조). 나는 파일이나 스크립트에 문제가 있는지 알아 내려고하고있다. 인코딩을 확인하는 방법이 있습니까? 필자의 모든 검색은 잘 구성된 XML을 검사하는 XML 유효성 검사 도구 또는 도구에서 끝났습니다. 나는 XMLSpy를 시도하고 싶었지만 현재는 그것에 접근 할 수 없다.XML 인코딩을 확인하는 방법
오류를 던지고 코드는 'parser.parse'라인 (파이썬 2.7)입니다 : 'INFILE'는이 인스턴스의 XML 해당 파일 'fileEncoding이'입니다
from xml.sax import make_parser
from xml.sax.handler import ContentHandler
import codecs
parser = make_parser()
curHandler = XmlHandler()
parser.setContentHandler(curHandler)
parser.parse(codecs.open(infile, 'rb', fileEncoding))
은 ' UTF-16 '.
스크립트는 UTF-8로 인코딩 된 파일에서 제대로 작동합니다. 하지만 UTF-16 파일의 경우 다음과 같은 오류가 발생합니다.
xml.sax._exceptions.SAXParseException: XmlFile.xml:1:30: encoding specified in XML declaration is incorrect
죄송하지만 XML을 게시 할 수 없습니다. 그것은 복잡하지는 않지만 여러 외국의 단어/이름을 포함합니다. 현재의 인코딩은 인코딩이 UTF-8이지만 인코딩 속성이 UTF-16으로 설정되어 있다는 것입니다. 이것을 확인하는 방법이 있습니까?
업데이트 : 확인. 그래서 나는 완전히 혼란 스럽다. XML 파일의 인코딩을 UTF-16 대신 UTF-8로 변경했지만 스크립트에서 변경하는 것을 잊었습니다. 스크립트가 예상대로 실행되었습니다. 그래서 파일 인코딩 = 'UTF-8'하지만 연 : 오류없이 예상대로
parser.parse(codecs.open(infile, 'rb', 'UTF-16'))
작품.
추가 정보 : Win7/Server 2008 환경에서 개발/실행 중입니다.
주셔서 감사합니다 BOM은 인코딩이 UTF-16LE 인 것으로 가정하고 FF FE를 보여주고 있지만 파일이 올바르게 인코딩되었는지 확인하는 방법이 있는지 알아 내려고합니다. – LVerwolf