2

多くの特殊文字 (Unicode と HTML エンティティ形式の両方) を含む HTML ファイルの解析に取り組んでいます。Python での Unicode に関するドキュメントをたくさん読んだにもかかわらず、まだ HTML エンティティを適切に変換できません。

これが私が実行したテストです:

>>> import HTMLParser
>>> p = HTMLParser.HTMLParser()
>>> s = p.unescape("‹")
>>> repr(s)
"u'\\x8b'"
>>> print s 
‹ # !!!
>>> s
u'\x8b'
>>> print s.encode("latin1")
‹ # OK, it prints fine in latin1, but I need UTF-8 ...
>>> print s.encode("utf8")
‹ # !!!

>>> import codecs
>>> out = codecs.open("out8.txt", encoding="utf8", mode="w")
>>> out.write(s)
# Viewing the file as ANSI gives me ‹ # !!!
# Viewing the file as UTF8 gives NOTHING, as if the file were empty # !!!

エスケープされていない文字列 s を UTF8 ファイルに書き込む正しい方法は何ですか?

4

1 に答える 1

3

U+008B は制御文字なので、何も見えないことも珍しくありません。「‹」は U+2039 SINGLE LEFT-POINTING ANGLE QUOTATION MARK であり、Latin-1 にもありません。ただし、 CP1252では文字0x8Bです。また、事前に実行しない限り、何が正しいかどうかを Windows コンソールの出力に頼るのをやめてください。chcp 65001

于 2012-10-04T16:55:47.007 に答える