[英]How do you convert a string representation of a UTF-16 byte sequence to UTF-8 in Python?
我正在創建一個讀取.rtf文件的程序。 .rtf文件以ASCII編碼,但表示非ASCII字符,其中包含轉義序列,后跟兩個表示UTF-16雙字節的數字。 例如,“これは日本語。”表示為“\\'\\ n'\\'\\ n \\ n \\ n \\ n \\ n \\ n \\ n \\ n \\ n \\ n \\ _ \\ _ \\ b \\ \\'\\'\\'\\'\\'\\'\\'\\'\\'\\'\\'\\'\\'\\'\\'\\'\\'\\'\\'\\'\\'\\'\\'\\'\\'\\'\\'\\' \\ '81 \\ '42" 。
出於我的程序的目的,代碼頁始終是“cpg1252”。
如何將“\\'xx”序列轉換為UTF-8字符串? 我試着玩編解碼器,但我得到的只是胡言亂語。
您似乎在代碼頁轉義中包含Shift-JIS數據 ; 你可以提取標記的字節並解碼那些:
import re
from binascii import unhexlify
cp_escapes = re.compile(r"\'([0-9a-fA-F]{2})")
def extract_cp_escapes(data):
return unhexlify(''.join(marked_bytes.findall(data)))
然后解碼; Shift-JIS是Windows上的代碼頁932:
>>> 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')
これは日本語。
如果需要,您可以將其解碼為另一個編解碼器,如UTF-8。
它可能是使用的確切代碼頁也被編碼的RTF文件,但我沒有時間來研究這一點。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.