사용하려고하면 "UnicodeDecodeError : 'shift_jis'코덱에서 2-3 위치의 바이트를 디코딩 할 수 없습니다 : 멀티 바이트 시퀀스가 아닙니다. 내 이메일 파서가 shift_jis로 인코딩 된 이메일을 디코딩하고 유니 코드로 변환합니다. 코드 및 이메일 아래에 찾을 수 있습니다인코딩이 Shift_jis 일 때 Python의 전자 메일 모듈을 사용하여 전자 메일을 구문 분석하는 동안 오류가 발생했습니다.
import email.header
import base64
import sys
import email
def getrawemail():
line = ' '
raw_email = ''
while line:
line = sys.stdin.readline()
raw_email += line
return raw_email
def getheader(subject, charsets):
for i in charsets:
if isinstance(i, str):
encoding = i
break
if subject[-2] == "?=":
encoded = subject[5 + len(encoding):len(subject) - 2]
else:
encoded = subject[5 + len(encoding):]
return (encoding, encoded)
def decodeheader((encoding, encoded)):
decoded = base64.b64decode(encoded)
decoded = unicode(decoded, encoding)
return decoded
raw_email = getrawemail()
msg = email.message_from_string(raw_email)
subject = decodeheader(getheader(msg["Subject"], msg.get_charsets()))
print subject
이메일 :이 유니 코드 및 SHIFT_JIS 인코딩하는 방법의 차이에 관련이있을 수 있습니다 또 다른 스택 오버플로 질문에 읽고 http://pastebin.com/L4jAkm5R
(그들은 this를 참조 Microsoft 기술 자료 문서). 누군가 내 코드에서 무엇이 작동하지 않는지 알거나, 심지어 이것이 고칠 수있는 것이라면 어떻게하는지 알아내는 것이 좋습니다.