diff options
author | Barry Warsaw <barry@python.org> | 2003-12-30 16:52:25 (GMT) |
---|---|---|
committer | Barry Warsaw <barry@python.org> | 2003-12-30 16:52:25 (GMT) |
commit | 4a442937359fa29af8457bd22b2d73fe39327cf8 (patch) | |
tree | 06c7951946350708795ee2fe189583830d778a08 | |
parent | 339270e6f541ad2de86750bfc30ae1e642dc142b (diff) | |
download | cpython-4a442937359fa29af8457bd22b2d73fe39327cf8.zip cpython-4a442937359fa29af8457bd22b2d73fe39327cf8.tar.gz cpython-4a442937359fa29af8457bd22b2d73fe39327cf8.tar.bz2 |
Fixes to support CJKCodecs as per SF bug #852347. Actually, this
patch removes dependencies on the old unsupported KoreanCodecs package
and the alternative JapaneseCodecs package. Since both of those
provide aliases for their codecs, this removal just makes the generic
codec names work.
We needed to make slight changes to __init__() as well.
This will be backported to Python 2.3 when its branch freeze is over.
-rw-r--r-- | Lib/email/Charset.py | 35 |
1 files changed, 16 insertions, 19 deletions
diff --git a/Lib/email/Charset.py b/Lib/email/Charset.py index dd328e0..e4b9e9f 100644 --- a/Lib/email/Charset.py +++ b/Lib/email/Charset.py @@ -1,6 +1,17 @@ # Copyright (C) 2001,2002 Python Software Foundation # Author: che@debian.org (Ben Gertzfield), barry@zope.com (Barry Warsaw) +# Python 2.3 doesn't come with any Asian codecs by default. Two packages are +# currently available and supported as of this writing (30-Dec-2003): +# +# CJKCodecs +# http://cjkpython.i18n.org +# This package contains Chinese, Japanese, and Korean codecs + +# JapaneseCodecs +# http://www.asahi-net.or.jp/~rd6t-kjym/python +# Some Japanese users prefer this codec package + from types import UnicodeType from email.Encoders import encode_7or8bit import email.base64MIME @@ -88,27 +99,11 @@ ALIASES = { 'ascii': 'us-ascii', } -# Map charsets to their Unicode codec strings. Note that Python doesn't come -# with any Asian codecs by default. Here's where to get them: -# -# Japanese -- http://www.asahi-net.or.jp/~rd6t-kjym/python -# Korean -- http://sf.net/projects/koco -# Chinese -- http://sf.net/projects/python-codecs -# -# Note that these codecs have their own lifecycle and may be in varying states -# of stability and useability. +# Map charsets to their Unicode codec strings. CODEC_MAP = { - 'euc-jp': 'japanese.euc-jp', - 'iso-2022-jp': 'japanese.iso-2022-jp', - 'shift_jis': 'japanese.shift_jis', - 'euc-kr': 'korean.euc-kr', - 'ks_c_5601-1987': 'korean.cp949', - 'iso-2022-kr': 'korean.iso-2022-kr', - 'johab': 'korean.johab', - 'gb2132': 'eucgb2312_cn', + 'gb2312': 'eucgb2312_cn', 'big5': 'big5_tw', - 'utf-8': 'utf-8', # Hack: We don't want *any* conversion for stuff marked us-ascii, as all # sorts of garbage might be sent to us in the guise of 7-bit us-ascii. # Let that stuff pass through without conversion to/from Unicode. @@ -220,6 +215,8 @@ class Charset: # it. henc, benc, conv = CHARSETS.get(self.input_charset, (SHORTEST, BASE64, None)) + if not conv: + conv = self.input_charset # Set the attributes, allowing the arguments to override the default. self.header_encoding = henc self.body_encoding = benc @@ -229,7 +226,7 @@ class Charset: self.input_codec = CODEC_MAP.get(self.input_charset, self.input_charset) self.output_codec = CODEC_MAP.get(self.output_charset, - self.input_codec) + self.output_charset) def __str__(self): return self.input_charset.lower() |