我正在尝试使用this answer here将阿拉伯语文本转换为utf8
编码字节,然后转换为二进制文件。
首先,我使用了示例中的代码:
'{:b}'.format(int(u'سلام'.encode('utf-8').encode('hex'), 16))
但我收到了这个错误:
AttributeError: 'bytes' object has no attribute 'encode'
我也删除了.encode('hex')
,但仍然会出现同样的错误。
有没有办法将utf8
代码转换为二进制代码,反之亦然?
答案 0 :(得分:1)
这个怎么样:
>>> ''.join('{:08b}'.format(b) for b in 'سلام'.encode('utf8'))
'1101100010110011110110011000010011011000101001111101100110000101'
迭代编码的bytes
对象,每次迭代得到一个0..255范围内的整数。
然后整数以二进制表示法格式化,零填充最多8位。
然后将所有内容与str.join()
粘合在一起。
对于反向,您链接到的问题的答案中给出的方法可以适用于Python 3,如下所示(s
是上述示例的输出,即。str
0s和1s):
>>> bytes(int(b, 2) for b in re.split('(........)', s) if b).decode('utf8')
'سلام'