从stdin读取任何类型的编码,我不知道它会是什么

2024-06-16 10:43:57 发布

您现在位置:Python中文网/ 问答频道 /正文

我正在处理来自stdin的电子邮件,我收到了50种不同编码的电子邮件。我该如何编写代码将其转换为UTF-8,或者直接在内存中读取它而不需要。你知道吗

语法错误:文件mime2中的非ASCII字符'\xc2'vt.py公司第450行,但未声明编码

我不能声明和编码,因为在互联网上随机的人已经编码了什么。你知道吗

  1. 读入记忆。我在这一步出错了
  2. 检测类型
  3. 解码它

我更改了地址以保护自己

Return-Path: <vba@uyh.com>
X-Original-To: me@me.com
Delivered-To: me@me.com
Received: from uyh.com (unknown [27.150.160.116])
        by <me> (Postfix) with ESMTP id 528FC7B5A53
        for <me@me.com>; Fri, 25 Sep 2015 18:49:13 -0500 (CDT)
From: =?GB2312?B?x+vXqtDox/PIy9Sx?= <vba@uyh.com>
Subject: =?GB2312?B?tNO8vMr119/P8rncwO0=?=
To: me@me.com
Content-Type: text/plain;charset="GB2312"
Date: Sat, 26 Sep 2015 07:49:08 +0800
X-Priority: 2
X-Mailer: Microsoft Outlook Express 5.50.4133.2400

´Ó¼¼Êõ×ßÏò¹ÜÀí

2015Äêʱ¼ä°²ÅÅ
10ÔÂ26-27ÈÕ±±¾©   11ÔÂ2-3ÈÕÉϺ£     10ÔÂ29-30ÈÕÉîÛÚ
11ÔÂ19-20±±¾©     11ÔÂ23-24ÈÕÉϺ£   11ÔÂ30-12ÔÂ1ÈÕÉîÛÚ
12ÔÂ28-29ÈÕ±±¾©   12ÔÂ24-25ÈÕÉϺ£   12ÔÂ21-22ÈÕÉîÛÚ

这是出错的代码。你知道吗

data =  join([sys.stdin])
   for line in sys.stdin:
      data+=line.decode("utf8")
   msg = email.message_from_string(data)

我甚至无法访问charset=值。这也可能是假的,但至少我有一些线索。你知道吗

我刚试过这个: 数据=系统标准读取(100) 得到这个:

  File "/usr/lib64/python3.5/codecs.py", line 321, in decode
    (result, consumed) = self._buffer_decode(data, self.errors, final)
UnicodeDecodeError: 'utf-8' codec can't decode byte 0xb4 in position 546: invalid start byte

我甚至没有要求546字节,它仍然读取它,即使我要求1字节。你知道吗

有人建议python3 -u </here/whatever 这仍然是错误。你知道吗


Tags: to代码inpycom编码data电子邮件