代码之家  ›  专栏  ›  技术社区  ›  Kev1n91

如何在从电子邮件对象接收到umlaute或python 3中的特殊字符后恢复它们?[副本]

  •  0
  • Kev1n91  · 技术社区  · 8 年前

    我有一个python类用来读取gmail的电子邮件。我可以很好地接收电子邮件,但是在收到带有以下示例性命令的电子邮件后:

    import email
    
    #...
    s = self.message.get_payload()
    message = s[0].get_payload()
    

    我面临的问题是,像Umalaute这样的字符没有正确显示,例如:

    "Weiterer Tests für Email-Empfang"
    

    显示为:

    "Weiterer Test f=C3=BCr Email-Empfang"
    

    我知道在Python 3中,默认情况下所有字符串都是unicode的,但如何恢复原始消息?

    1 回复  |  直到 8 年前
        1
  •  0
  •   rassar    8 年前

    =C3=B3 是URL中使用的UTF-8编码的ascii表示形式。因此,您可以使用 urllib.parse.unquote :

    >>> s = "Weiterer Test f=C3=BCr Email-Empfang"
    >>> unquote(s.replace("=", "%"))
    'Weiterer Test für Email-Empfang'
    >>> s = "Weiterer Test f%C3%BCr Email-Empfang"
    >>> unquote(s.replace('=', '%'))
    'Weiterer Test für Email-Empfang'