首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何在Python中将\xXY编码字符转换为UTF-8?

如何在Python中将\xXY编码字符转换为UTF-8?
EN

Stack Overflow用户
提问于 2011-01-19 22:18:25
回答 3查看 16.5K关注 0票数 5

我有一个文本,其中包含诸如"\xaf“、"\xbe”之类的字符,据我在this question中的理解,这些字符是ASCII码字符。

我想将它们在Python中转换为UTF-8等效项。通常的string.encode("utf-8")会抛出UnicodeDecodeError。有没有更好的方法,例如,使用codecs标准库?

示例200 characters here

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2011-02-13 22:28:28

您的文件已经是UTF-8编码文件。

代码语言:javascript
复制
# 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))

并手动填写未知名称:

字符U000a换行符

字符U001e信息分隔符2

char U001f信息分隔符1

票数 2
EN

Stack Overflow用户

发布于 2011-01-19 22:36:13

.encode用于将Unicode字符串( 2.x中的unicode,3.x中的str )转换为字节字符串( 2.x中的str,3.x中的bytes )。

在2.x中,在str对象上调用.encode是合法的。Python首先隐式地将字符串解码为Unicode:s.encode(e)的工作方式就像您编写了s.decode(sys.getdefaultencoding()).encode(e)一样。

问题是默认编码是"ascii",而您的字符串包含非ASCII字符。您可以通过显式指定正确的编码来解决此问题。

代码语言:javascript
复制
>>> '\xAF \xBE'.decode('ISO-8859-1').encode('UTF-8')
'\xc2\xaf \xc2\xbe'
票数 3
EN

Stack Overflow用户

发布于 2011-01-19 22:22:32

它不是ASCII码(ASCII码只有127;\xaf是175)。您首先需要找出正确的编码,对其进行解码,然后以UTF-8重新编码。

你能提供一个实际的字符串样本吗?然后,我们可能可以猜测当前的编码。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/4736261

复制
相关文章

相似问题

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