我的字符串是
u'3.4\xa2 / each'
'\xa2'
是“分”符号,我想这样显示。
我试过了
i= "3.4\xa2 / each"
print unicode(i, errors='replace')
在结果中,分符号显示为实心圆圈内的问号。
我也试过
i= "3.4\xa2 / each"
print i.encode('utf-8')
我明白了
UnicodeDecodeError: 'ascii' codec can't decode byte 0xa2 in position 3: ordinal not in range(128)
那么实现这一目标的正确方法是什么?
最佳答案
'\xa2'
是一个字节。它可能被解释为分符号,但前提是您指定了正确的编解码器。通过指定正确的编解码器,您可以将其解码为等效的 Unicode 代码点。 Latin-1 可以:
>>> print '\xa2'.decode('latin1')
¢
有一个整体series of encodings但是,将 ¢
cent 代码点编码为 A2。
或者,以 Unicode 字符串开头。 Unicode 字符串表达式中的 \xa2
与 \u00a2
相同,恰好是正确的代码点:
>>> print u'\xa2'
¢
>>> print u'\u00a2'
¢
这是因为 Unicode 标准的前 256 个代码点恰好符合 Latin-1 (ISO-8859-1) 标准。
您可能无法打印;如果您使用的是终端或控制台,print
应该自动编码 Unicode 数据以匹配您的终端或控制台配置,但这可能并不总是正确的或设置为可以处理字符的编解码器你正在尝试打印!
请注意,我已解码。如果您编码,Python 会尝试提供帮助并首先将字节解码为 Unicode 对象,以便随后对其进行编码。因为 \xa2
不是有效的 ASCII 字节,所以解码失败。
你可能想阅读:
Pragmatic Unicode作者:内德·巴切尔德
在继续之前。
关于Python字符串分号转换,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35486474/