[英]How to convert \xXY encoded characters to UTF-8 in Python?
.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.