【问题标题】:How to decode Cyrillic WINDOWS-1251 string to unicode using python如何使用 python 将 Cyrillic WINDOWS-1251 字符串解码为 un​​icode
【发布时间】:2019-01-26 03:39:32
【问题描述】:

我有一个非常大 (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,但它总是输出相同的字符串。

【问题讨论】:

    标签: python unicode


    【解决方案1】:

    该数据根据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')
    'Рвись в атаку н= а «Першинге»'
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2014-03-13
      • 2023-04-07
      • 2021-11-25
      • 1970-01-01
      • 2018-01-29
      • 2016-08-21
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多