在使用utf-8进行编码之后,无法使用utf-8进行解码



在一种情况下,我不得不将数据存储为utf-8,而现在当我想要获取和decode('utf-8')数据时,它根本不起作用。以下面的行为例:

x0dx0axd8xb3xd8xa7xd9x82xdbx8cxe2x80x8cxd9x86xd8xa7xd9x85xd9x87

您可以简单地复制下面的行,将上面的字符串转换为人类可读的格式:

b"x0dx0axd8xb3xd8xa7xd9x82xdbx8cxe2x80x8cxd9x86xd8xa7xd9x85xd9x87".decode("utf-8")

但是,找不到在不损坏字符串的情况下将字符串转换为bytestring的方法。我尝试了以下方法,但都失败了:

.decode("utf-8")
.decode()
.bytes()

到目前为止,我还无法在操作系统或其他地方找到解决方案。感谢您的帮助。

x0dx0axd8xb3xd8xa7xd9x82xdbx8cxe2x80x8cxd9x86xd8xa7xd9x85xd9x87
b'x0dx0axd8xb3xd8xa7xd9x82xdbx8cxe2x80x8cxd9x86xd8xa7xd9x85xd9x87'

上面的行(都在问题中给出(分别是String和Bytes文本的特定实例:

xhh具有十六进制值hh(2,3(的字符


2与标准C不同,正好有两个十六进制数字必需

3在字节文字中,十六进制和八进制转义表示具有给定值的字节在字符串文字中,这些转义符表示具有给定值的Unicode字符


让我们检查以这种方式定义的字符串(在Python提示符内(:

>>> xstr = "x0dx0axd8xb3xd8xa7xd9x82xdbx8cxe2x80x8cxd9x86xd8xa7xd9x85xd9x87"
>>> xstr
'rnساÙx82Ûx8câx80x8cÙx86اÙx85Ùx87'
>>> print( xstr)
ساÙÛâÙاÙ
Ù
>>>

显然,print( xstr)的输出与任何已知语言中的单词都不相似,但它的所有字符(根据定义(都属于Unicode范围r'[u0000-u00ff]',即Unicode中的前256个字符,瞧,它是iso-8859-1,又名"latin1"。

我们需要获得xstr字符串的编码版本作为字节对象,例如使用str.encode方法或内置的bytes()函数。然后

print( bytes(xstr,'latin1').decode()); print(xstr.encode("latin1").decode())
ساقی‌نامه
ساقی‌نامه

相关内容

  • 没有找到相关文章

最新更新