首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >用Python编写UTF-8代码

用Python编写UTF-8代码
EN

Stack Overflow用户
提问于 2016-02-03 01:35:25
回答 1查看 250关注 0票数 1

我有一个用`_‘编码的UTF-8字符,例如'_ea_b4_80’。我试图使用替换方法将其转换为UTF-8字符,但无法得到正确的编码。

这是一个代码示例:

代码语言:javascript
复制
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不同;这是一个输出。

代码语言:javascript
复制
\xea\xb4\x80
\xea\xb4\x80
관  <-- correctly shown 

可能出什么事了?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2016-02-03 01:41:41

\x只在字符串文本中有意义,您不能使用replace添加它。

要获得所需的结果,请转换为字节,然后解码:

代码语言:javascript
复制
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,可以避免导入(假设r实际上是一个strbytes.fromhex,与binascii.hexlify不同,只使用str输入,而不是bytes输入),使用bytes.fromhex类方法代替binascii.unhexlify

代码语言:javascript
复制
rbytes = bytes.fromhex(rhexonly)  # Returns b'\xea\xb4\x80'
票数 4
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/35166992

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档