簡體   English   中英

如何在Python中將\\ xXY編碼的字符轉換為UTF-8?

[英]How to convert \xXY encoded characters to UTF-8 in Python?

我有一個文本,其中包含“\\ xaf”,“\\ xbe”等字符,正如我從這個問題中理解的那樣,它是ASCII編碼字符。

我想用Python將它們轉換為UTF-8等價物。 通常的string.encode("utf-8")拋出UnicodeDecodeError 是否有更好的方法,例如,使用codecs標准庫?

這里有200個字符

.encode用於將Unicode字符串(2.x中的unicode ,3.x中的str )轉換為字節字符串( str中的2.x,3.x中的bytes )。

在2.x中,在str對象上調用.encode是合法的。 Python首先將字符串隱式解碼為Unicode: s.encode(e)就像編寫了s.decode(sys.getdefaultencoding()).encode(e)

問題是默認編碼是“ascii”,並且您的字符串包含非ASCII字符。 您可以通過明確指定正確的編碼來解決此問題。

>>> '\xAF \xBE'.decode('ISO-8859-1').encode('UTF-8')
'\xc2\xaf \xc2\xbe'

它不是ASCII(ASCII代碼最多只能達到127; \\xaf是175)。 首先需要找出正確的編碼,解碼,然后在UTF-8中重新編碼。

你能提供一個實際的字符串樣本嗎? 然后我們可以猜測當前的編碼。

您的文件已經是UTF-8編碼文件。

# saved encoding-sample to /tmp/encoding-sample
import codecs
fp= codecs.open("/tmp/encoding-sample", "r", "utf8")
data= fp.read()

import unicodedata as ud

chars= sorted(set(data))
for char in chars:
    try:
        charname= ud.name(char)
    except ValueError:
        charname= "<unknown>"
    sys.stdout.write("char U%04x %s\n" % (ord(char), charname))

並手動填寫未知名稱:
char U000a LINE FEED
char U001e信息分離器二
char U001f INFORMATION SEPARATOR ONE

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM