[英]UTF-8 coding in Python
我有一個用'_'編碼的UTF-8字符,例如'_ea_b4_80'。 我正在嘗試使用replace方法將其轉換為UTF-8字符,但是我無法獲得正確的編碼。
這是一個代碼示例:
import sys
reload(sys)
sys.setdefaultencoding('utf8')
r = '_ea_b4_80'
r2 = '\xea\xb4\x80'
r = r.replace('_', '\\x')
print r
print r.encode("utf-8")
print r2
在此示例中,r與r2不同; 這是一個輸出。
\xea\xb4\x80
\xea\xb4\x80
관 <-- correctly shown
可能是什么問題?
\\x
僅在字符串文字中有意義,您不能使用replace
來添加它。
要獲得所需的結果,請轉換為字節,然后解碼:
import binascii
r = '_ea_b4_80'
rhexonly = r.replace('_', '') # Returns 'eab480'
rbytes = binascii.unhexlify(rhexonly) # Returns b'\xea\xb4\x80'
rtext = rbytes.decode('utf-8') # Returns '관' (unicode if Py2, str Py3)
print(rtext)
這應該讓您관
。
如果您使用的是現代Py3,則可以避免使用import(假設r
實際上是str
; bytes.fromhex
,與binascii.hexlify
不同,只接受str
輸入,而不接受bytes
輸入),使用bytes.fromhex
類方法代替binascii.unhexlify
:
rbytes = bytes.fromhex(rhexonly) # Returns b'\xea\xb4\x80'
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.