Python 将Unicode转换为二进制

Python 将Unicode转换为二进制,python,python-3.x,utf-8,Python,Python 3.x,Utf 8,我正在尝试使用将阿拉伯语文本转换为utf8编码字节,然后转换为二进制 首先,我使用了示例中的代码: '{:b}'.format(int(u'سلام'.encode('utf-8').encode('hex'), 16)) 但我有一个错误: AttributeError: 'bytes' object has no attribute 'encode' 我还删除了.encode('hex'),但仍然给出了相同的错误 有没有办法将utf8代码转换成二进制代码,反之亦然?这个怎么样: >&

我正在尝试使用将阿拉伯语文本转换为
utf8
编码字节,然后转换为二进制

首先,我使用了示例中的代码:

'{:b}'.format(int(u'سلام'.encode('utf-8').encode('hex'), 16))
但我有一个错误:

AttributeError: 'bytes' object has no attribute 'encode'
我还删除了
.encode('hex')
,但仍然给出了相同的错误

有没有办法将
utf8
代码转换成二进制代码,反之亦然?

这个怎么样:

>>> ''.join('{:08b}'.format(b) for b in 'سلام'.encode('utf8'))
'1101100010110011110110011000010011011000101001111101100110000101'
这将迭代编码的
字节
对象,每次迭代都会得到一个范围为0..255的整数。 然后将整数格式化为二进制表示法,零填充最多为8位。 然后用
str.join()
将所有东西粘在一起

相反,您链接到的问题的答案中给出的方法可以适用于Python 3,如下所示(
s
是上述示例的输出,即0和1的
str
):


可能是?@pstatix的副本,我如何才能进行反向操作?从位到utf8你不需要将utf8编码成什么东西,它已经被编码成了一个字节序列,你只能将它解码成文本(文本最初被编码成utf-8,这是你的起点)来做编码的逆运算,你需要解码。快速问一个问题,你为什么要首先将它转换成二进制。如果这只是关于编码,那么有更好的方法,比如模块。
>>> bytes(int(b, 2) for b in re.split('(........)', s) if b).decode('utf8')
'سلام'