我读过一堆关于ord和chr的内容,但到目前为止,我被困住了。 我需要的是能够做到以下几点:
我有一个代码点的字节数组,因此在0-255范围内 对于他们每个人,我想要相关的utf-8字符 然后我需要连接这些字符并使用结果字符串作为字节数组,而不是它们的代码点数组!
我试图将字符串视为在iso-8859-1中编码的bytearray,但到目前为止,没有运气。 任何帮助表示赞赏!
当前代码:
import sys
reload(sys)
msg = ''
sys.setdefaultencoding('iso-8859-1')
for m in bytearray(input, 'iso-8859-1', ''):
msg += unichr(m)
msg = bytearray(msg, 'iso-8859-1')
答案 0 :(得分:0)
无需摆弄“defautlencoding” - 只需将其保留原样 - 您拥有自己的数据和所需的编码.Python解释器具有默认值 - 与OS终端的接口,依此类推。 / p>
所以,假设你有一个名为input
的字节数组,在iso-8859-1(latin1)中编码,你需要相应的utf-8编码文本,jsut do:
result = bytearray(bytes(input).decode("iso-8859-1").encode("utf-8"))
“encode”方法的输出本身就是一个“字节”对象 - 字节和字节对象可以透明地构建在另一个对象上。
(是的,您只需要该行 - 无需导入sys
,使用for
循环或其他编码调用。)
答案 1 :(得分:-1)
对于那些想知道的人,我在更多的挖掘后自己找到了解决方案,但如果你知道一个,我会采用更加蟒蛇化的方式做事!
import sys
reload(sys)
sys.setdefaultencoding('iso-8859-1')
mm = bytearray(input)
msg = bytearray()
for m in mm:
val = bytearray(unichr(m), 'utf-8')
for v in val:
msg.append(v)
# revert if required
# sys.setdefaultencoding('ascii')