3
XML 형식의 유니 코드 문자열을 입력으로 사용하고 있습니다. xml.sax는 원래 웹 양식에서 입력 한 것입니다. 내 로컬 컴퓨터 (Python 2.5, 기본 xmlreader expat를 사용하여, 응용 프로그램 엔진을 통해 실행)에서 제대로 작동합니다. 그러나 프로덕션 앱 엔진 서버의 코드와 입력 문자열은 정확히 일치하지 않습니다.App Engine에서 Python SAX로 유니 코드 XML 구문 분석
from xml import sax
class MyHandler(sax.ContentHandler):
pass
handler = MyHandler()
# Both of these unicode strings return 'not well-formed'
# on app engine, but work locally
xml.parseString(u"<a>b</a>",handler)
xml.parseString(u"<!DOCTYPE a[<!ELEMENT a (#PCDATA)> ]><a>b</a>",handler)
# Both of these work, but output unicode
xml.parseString("<a>b</a>",handler)
xml.parseString("<!DOCTYPE a[<!ELEMENT a (#PCDATA)> ]><a>b</a>",handler)
오류 발생 : 예를 들어, 아래 코드로 발생
File "<string>", line 1, in <module>
File "/base/python_dist/lib/python2.5/xml/sax/__init__.py", line 49, in parseString
parser.parse(inpsrc)
File "/base/python_dist/lib/python2.5/xml/sax/expatreader.py", line 107, in parse
xmlreader.IncrementalParser.parse(self, source)
File "/base/python_dist/lib/python2.5/xml/sax/xmlreader.py", line 123, in parse
self.feed(buffer)
File "/base/python_dist/lib/python2.5/xml/sax/expatreader.py", line 211, in feed
self._err_handler.fatalError(exc)
File "/base/python_dist/lib/python2.5/xml/sax/handler.py", line 38, in fatalError
raise exception
SAXParseException: <unknown>:1:1: not well-formed (invalid token)
유니 코드를 입력 할 때 또한 python2.5와 해외 거주자를 사용하는 응용 프로그램 엔진의 파서는, 실패 어떤 이유 ?
맞습니다. original_string.encode ('utf-8')를 전달하면 문제가 해결됩니다. 표준 파서가 직선형 유니 코드를 전달할 수 있다는 것은 이상합니다. –