在一种情况下,我不得不将数据存储为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())
ساقینامه ساقینامه