我正在创建一个读取.rtf文件的程序。 .rtf文件以ASCII编码,但表示非ASCII字符,其中包含转义序列,后跟两个表示UTF-16双字节的数字。例如,“これは日本语。”表示为“\'\ n'\'\ n \ n \ n \ n \ n \ n \ n \ n \ n \ n \ _ \ _ \ b \ \'\'\'\'\'\'\'\'\'\'\'\'\'\'\'\'\'\'\'\'\'\'\'\'\'\'\'\' \ '81 \ '42" 。
出于我的程序的目的,代码页始终是“cpg1252”。
如何将“\'xx”序列转换为UTF-8字符串?我试着玩编解码器,但我得到的只是胡言乱语。
答案 0 :(得分:0)
Shift-JIS data内似乎有code-page escapes;你可以提取标记的字节并解码它们:
>>> text = r"\'82\'b1\'82\'ea\'82\'cd\'93\'fa\'96\'7b\'8c\'ea\'81\'42"
>>> extract_cp_escapes(text)
'\x82\xb1\x82\xea\x82\xcd\x93\xfa\x96{\x8c\xea\x81B'
>>> print extract_marked_bytes(text).decode('cp932')
これは日本語。
然后解码; Shift-JIS是Windows上的代码页932:
{{1}}
如果需要,您可以将其解码为另一个编解码器,如UTF-8。
可能可能可能使用的确切代码页也在RTF文档中编码,但我没时间研究它。