繁体   English   中英

如何使用python将西里尔字母WINDOWS-1251字符串解码为unicode

[英]How to decode Cyrillic WINDOWS-1251 string to unicode using python

我有一个很大的(2.5 GB)文本文件,其中包含各种编码的西里尔字母,包括Windows-1251:

= D0 = A0 = D0 = B2 = D0 = B8 = D1 = 81 = D1 = 8C = D0 = B2 = D0 = B0 = D1 = 82 = D0 = B0 = D0 = BA = D1 = 83 = D0 = BD = = D0 = B0 = C2 = AB = D0 = 9F = D0 = B5 = D1 = 80 = D1 = 88 = D0 = B8 = D0 = BD = D0 = B3 = D0 = B5 = C2 = BB

我已经尝试过使用各种编码组合的.encode()和.decode(),但是我无法使文本可读。 我也尝试过以二进制模式阅读。

with open('myfile.mbox', 'r') as f:
    unreadable_str = f.readline()

unreadable_str.encode('WINDOWS-1251').decode('utf-8') 

我以为它将使用Windows编码将字符串编码为字节,然后以可读的Unicode形式返回,但是相反,它始终输出相同的字符串。

该数据根据RFC 1522进行编码。 quopri模块可用于将数据解码为字节,看起来像UTF-8编码的数据:

>>> s='''=D0=A0=D0=B2=D0=B8=D1=81=D1=8C =D0=B2 =D0=B0=D1=82=D0=B0=D0=BA=D1=83 =D0=BD= =D0=B0 =C2=AB=D0=9F=D0=B5=D1=80=D1=88=D0=B8=D0=BD=D0=B3=D0=B5=C2=BB'''
>>> quopri.decodestring(s).decode('utf8')
'Рвись в атаку н= а «Першинге»'

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM