首页 > 解决方案 > Python 3 打印 utf-8 编码的字符串问题

问题描述

我正在从网络服务请求一个字符串。当我从程序中打印它时:

variable = getFromNetwork()
print(variable)

我用python3 net.py我得到的执行它:

\xd8\xaa\xd9\x85\xd9\x84\xd9\x8a612

当我在 python3 CLI 中执行时:

>>> print("\xd8\xaa\xd9\x85\xd9\x84\xd9\x8a612")
تÙ
Ù
Ù612

当我在 python2 CLI 中执行时购买,我得到了正确的结果:

>>> print("\xd8\xaa\xd9\x85\xd9\x84\xd9\x8a612")
تملي612

如何通过 python3 在我的程序中打印它?

编辑

执行以下行后:

print(print(type(variable), repr(variable)))

得到

<class 'str'> '\\xd8\\xaa\\xd9\\x85\\xd9\\x84\\xd9\\x8a612'

我想我应该先将其删除\\x以使其成为十六进制,然后再对其进行解码。你有什么解决办法!?

标签: pythonpython-3.x

解决方案


您需要指定编码,以便解释器知道如何解释数据:

s = "\xd8\xaa\xd9\x85\xd9\x84\xd9\x8a612"
y = s.encode('raw_unicode_escape')
print (y)  # is a bytes object now!
print (y.decode('utf-8'))

出去:

b'\xd8\xaa\xd9\x85\xd9\x84\xd9\x8a612'
تملي612

推荐阅读