annotate roundup/rfc2822.py @ 2005:fc52d57c6c3e

documentation cleanup
author Richard Jones <richard@users.sourceforge.net>
date Wed, 11 Feb 2004 23:55:10 +0000
parents ea1afeb64b45
children be047db3dd3d
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
2005
fc52d57c6c3e documentation cleanup
Richard Jones <richard@users.sourceforge.net>
parents: 1628
diff changeset
1 """Some rfc822 functions taken from the new (python2.3) "email" module.
fc52d57c6c3e documentation cleanup
Richard Jones <richard@users.sourceforge.net>
parents: 1628
diff changeset
2 """
fc52d57c6c3e documentation cleanup
Richard Jones <richard@users.sourceforge.net>
parents: 1628
diff changeset
3 __docformat__ = 'restructuredtext'
fc52d57c6c3e documentation cleanup
Richard Jones <richard@users.sourceforge.net>
parents: 1628
diff changeset
4
1383
f19dde90e473 applied unicode patch
Andrey Lebedev <kedder@users.sourceforge.net>
parents:
diff changeset
5 import re
1628
ea1afeb64b45 more pedantic rfc2822 header qp encoding
Andrey Lebedev <kedder@users.sourceforge.net>
parents: 1439
diff changeset
6 from string import letters, digits
1383
f19dde90e473 applied unicode patch
Andrey Lebedev <kedder@users.sourceforge.net>
parents:
diff changeset
7 from binascii import b2a_base64, a2b_base64
f19dde90e473 applied unicode patch
Andrey Lebedev <kedder@users.sourceforge.net>
parents:
diff changeset
8
f19dde90e473 applied unicode patch
Andrey Lebedev <kedder@users.sourceforge.net>
parents:
diff changeset
9 ecre = re.compile(r'''
f19dde90e473 applied unicode patch
Andrey Lebedev <kedder@users.sourceforge.net>
parents:
diff changeset
10 =\? # literal =?
f19dde90e473 applied unicode patch
Andrey Lebedev <kedder@users.sourceforge.net>
parents:
diff changeset
11 (?P<charset>[^?]*?) # non-greedy up to the next ? is the charset
f19dde90e473 applied unicode patch
Andrey Lebedev <kedder@users.sourceforge.net>
parents:
diff changeset
12 \? # literal ?
f19dde90e473 applied unicode patch
Andrey Lebedev <kedder@users.sourceforge.net>
parents:
diff changeset
13 (?P<encoding>[qb]) # either a "q" or a "b", case insensitive
f19dde90e473 applied unicode patch
Andrey Lebedev <kedder@users.sourceforge.net>
parents:
diff changeset
14 \? # literal ?
f19dde90e473 applied unicode patch
Andrey Lebedev <kedder@users.sourceforge.net>
parents:
diff changeset
15 (?P<encoded>.*?) # non-greedy up to the next ?= is the encoded string
f19dde90e473 applied unicode patch
Andrey Lebedev <kedder@users.sourceforge.net>
parents:
diff changeset
16 \?= # literal ?=
f19dde90e473 applied unicode patch
Andrey Lebedev <kedder@users.sourceforge.net>
parents:
diff changeset
17 ''', re.VERBOSE | re.IGNORECASE)
f19dde90e473 applied unicode patch
Andrey Lebedev <kedder@users.sourceforge.net>
parents:
diff changeset
18
1628
ea1afeb64b45 more pedantic rfc2822 header qp encoding
Andrey Lebedev <kedder@users.sourceforge.net>
parents: 1439
diff changeset
19 hqre = re.compile(r'^[A-z0-9!"#$%%&\'()*+,-./:;<=>?@\[\]^_`{|}~ ]+$')
1383
f19dde90e473 applied unicode patch
Andrey Lebedev <kedder@users.sourceforge.net>
parents:
diff changeset
20
f19dde90e473 applied unicode patch
Andrey Lebedev <kedder@users.sourceforge.net>
parents:
diff changeset
21 def base64_decode(s, convert_eols=None):
f19dde90e473 applied unicode patch
Andrey Lebedev <kedder@users.sourceforge.net>
parents:
diff changeset
22 """Decode a raw base64 string.
f19dde90e473 applied unicode patch
Andrey Lebedev <kedder@users.sourceforge.net>
parents:
diff changeset
23
f19dde90e473 applied unicode patch
Andrey Lebedev <kedder@users.sourceforge.net>
parents:
diff changeset
24 If convert_eols is set to a string value, all canonical email linefeeds,
f19dde90e473 applied unicode patch
Andrey Lebedev <kedder@users.sourceforge.net>
parents:
diff changeset
25 e.g. "\\r\\n", in the decoded text will be converted to the value of
f19dde90e473 applied unicode patch
Andrey Lebedev <kedder@users.sourceforge.net>
parents:
diff changeset
26 convert_eols. os.linesep is a good choice for convert_eols if you are
f19dde90e473 applied unicode patch
Andrey Lebedev <kedder@users.sourceforge.net>
parents:
diff changeset
27 decoding a text attachment.
f19dde90e473 applied unicode patch
Andrey Lebedev <kedder@users.sourceforge.net>
parents:
diff changeset
28
f19dde90e473 applied unicode patch
Andrey Lebedev <kedder@users.sourceforge.net>
parents:
diff changeset
29 This function does not parse a full MIME header value encoded with
f19dde90e473 applied unicode patch
Andrey Lebedev <kedder@users.sourceforge.net>
parents:
diff changeset
30 base64 (like =?iso-8895-1?b?bmloISBuaWgh?=) -- please use the high
f19dde90e473 applied unicode patch
Andrey Lebedev <kedder@users.sourceforge.net>
parents:
diff changeset
31 level email.Header class for that functionality.
f19dde90e473 applied unicode patch
Andrey Lebedev <kedder@users.sourceforge.net>
parents:
diff changeset
32
f19dde90e473 applied unicode patch
Andrey Lebedev <kedder@users.sourceforge.net>
parents:
diff changeset
33 Taken from 'email' module
f19dde90e473 applied unicode patch
Andrey Lebedev <kedder@users.sourceforge.net>
parents:
diff changeset
34 """
f19dde90e473 applied unicode patch
Andrey Lebedev <kedder@users.sourceforge.net>
parents:
diff changeset
35 if not s:
f19dde90e473 applied unicode patch
Andrey Lebedev <kedder@users.sourceforge.net>
parents:
diff changeset
36 return s
f19dde90e473 applied unicode patch
Andrey Lebedev <kedder@users.sourceforge.net>
parents:
diff changeset
37
f19dde90e473 applied unicode patch
Andrey Lebedev <kedder@users.sourceforge.net>
parents:
diff changeset
38 dec = a2b_base64(s)
f19dde90e473 applied unicode patch
Andrey Lebedev <kedder@users.sourceforge.net>
parents:
diff changeset
39 if convert_eols:
f19dde90e473 applied unicode patch
Andrey Lebedev <kedder@users.sourceforge.net>
parents:
diff changeset
40 return dec.replace(CRLF, convert_eols)
f19dde90e473 applied unicode patch
Andrey Lebedev <kedder@users.sourceforge.net>
parents:
diff changeset
41 return dec
f19dde90e473 applied unicode patch
Andrey Lebedev <kedder@users.sourceforge.net>
parents:
diff changeset
42
f19dde90e473 applied unicode patch
Andrey Lebedev <kedder@users.sourceforge.net>
parents:
diff changeset
43 def unquote_match(match):
2005
fc52d57c6c3e documentation cleanup
Richard Jones <richard@users.sourceforge.net>
parents: 1628
diff changeset
44 """Turn a match in the form ``=AB`` to the ASCII character with value
fc52d57c6c3e documentation cleanup
Richard Jones <richard@users.sourceforge.net>
parents: 1628
diff changeset
45 0xab.
1383
f19dde90e473 applied unicode patch
Andrey Lebedev <kedder@users.sourceforge.net>
parents:
diff changeset
46
f19dde90e473 applied unicode patch
Andrey Lebedev <kedder@users.sourceforge.net>
parents:
diff changeset
47 Taken from 'email' module
f19dde90e473 applied unicode patch
Andrey Lebedev <kedder@users.sourceforge.net>
parents:
diff changeset
48 """
f19dde90e473 applied unicode patch
Andrey Lebedev <kedder@users.sourceforge.net>
parents:
diff changeset
49 s = match.group(0)
f19dde90e473 applied unicode patch
Andrey Lebedev <kedder@users.sourceforge.net>
parents:
diff changeset
50 return chr(int(s[1:3], 16))
f19dde90e473 applied unicode patch
Andrey Lebedev <kedder@users.sourceforge.net>
parents:
diff changeset
51
f19dde90e473 applied unicode patch
Andrey Lebedev <kedder@users.sourceforge.net>
parents:
diff changeset
52 def qp_decode(s):
2005
fc52d57c6c3e documentation cleanup
Richard Jones <richard@users.sourceforge.net>
parents: 1628
diff changeset
53 """Decode a string encoded with RFC 2045 MIME header 'Q' encoding.
1383
f19dde90e473 applied unicode patch
Andrey Lebedev <kedder@users.sourceforge.net>
parents:
diff changeset
54
f19dde90e473 applied unicode patch
Andrey Lebedev <kedder@users.sourceforge.net>
parents:
diff changeset
55 This function does not parse a full MIME header value encoded with
f19dde90e473 applied unicode patch
Andrey Lebedev <kedder@users.sourceforge.net>
parents:
diff changeset
56 quoted-printable (like =?iso-8895-1?q?Hello_World?=) -- please use
f19dde90e473 applied unicode patch
Andrey Lebedev <kedder@users.sourceforge.net>
parents:
diff changeset
57 the high level email.Header class for that functionality.
f19dde90e473 applied unicode patch
Andrey Lebedev <kedder@users.sourceforge.net>
parents:
diff changeset
58
f19dde90e473 applied unicode patch
Andrey Lebedev <kedder@users.sourceforge.net>
parents:
diff changeset
59 Taken from 'email' module
f19dde90e473 applied unicode patch
Andrey Lebedev <kedder@users.sourceforge.net>
parents:
diff changeset
60 """
f19dde90e473 applied unicode patch
Andrey Lebedev <kedder@users.sourceforge.net>
parents:
diff changeset
61 s = s.replace('_', ' ')
f19dde90e473 applied unicode patch
Andrey Lebedev <kedder@users.sourceforge.net>
parents:
diff changeset
62 return re.sub(r'=\w{2}', unquote_match, s)
f19dde90e473 applied unicode patch
Andrey Lebedev <kedder@users.sourceforge.net>
parents:
diff changeset
63
f19dde90e473 applied unicode patch
Andrey Lebedev <kedder@users.sourceforge.net>
parents:
diff changeset
64 def _decode_header(header):
f19dde90e473 applied unicode patch
Andrey Lebedev <kedder@users.sourceforge.net>
parents:
diff changeset
65 """Decode a message header value without converting charset.
f19dde90e473 applied unicode patch
Andrey Lebedev <kedder@users.sourceforge.net>
parents:
diff changeset
66
f19dde90e473 applied unicode patch
Andrey Lebedev <kedder@users.sourceforge.net>
parents:
diff changeset
67 Returns a list of (decoded_string, charset) pairs containing each of the
f19dde90e473 applied unicode patch
Andrey Lebedev <kedder@users.sourceforge.net>
parents:
diff changeset
68 decoded parts of the header. Charset is None for non-encoded parts of the
f19dde90e473 applied unicode patch
Andrey Lebedev <kedder@users.sourceforge.net>
parents:
diff changeset
69 header, otherwise a lower-case string containing the name of the character
f19dde90e473 applied unicode patch
Andrey Lebedev <kedder@users.sourceforge.net>
parents:
diff changeset
70 set specified in the encoded string.
f19dde90e473 applied unicode patch
Andrey Lebedev <kedder@users.sourceforge.net>
parents:
diff changeset
71
f19dde90e473 applied unicode patch
Andrey Lebedev <kedder@users.sourceforge.net>
parents:
diff changeset
72 Taken from 'email' module
f19dde90e473 applied unicode patch
Andrey Lebedev <kedder@users.sourceforge.net>
parents:
diff changeset
73 """
f19dde90e473 applied unicode patch
Andrey Lebedev <kedder@users.sourceforge.net>
parents:
diff changeset
74 # If no encoding, just return the header
f19dde90e473 applied unicode patch
Andrey Lebedev <kedder@users.sourceforge.net>
parents:
diff changeset
75 header = str(header)
f19dde90e473 applied unicode patch
Andrey Lebedev <kedder@users.sourceforge.net>
parents:
diff changeset
76 if not ecre.search(header):
f19dde90e473 applied unicode patch
Andrey Lebedev <kedder@users.sourceforge.net>
parents:
diff changeset
77 return [(header, None)]
f19dde90e473 applied unicode patch
Andrey Lebedev <kedder@users.sourceforge.net>
parents:
diff changeset
78
f19dde90e473 applied unicode patch
Andrey Lebedev <kedder@users.sourceforge.net>
parents:
diff changeset
79 decoded = []
f19dde90e473 applied unicode patch
Andrey Lebedev <kedder@users.sourceforge.net>
parents:
diff changeset
80 dec = ''
f19dde90e473 applied unicode patch
Andrey Lebedev <kedder@users.sourceforge.net>
parents:
diff changeset
81 for line in header.splitlines():
f19dde90e473 applied unicode patch
Andrey Lebedev <kedder@users.sourceforge.net>
parents:
diff changeset
82 # This line might not have an encoding in it
f19dde90e473 applied unicode patch
Andrey Lebedev <kedder@users.sourceforge.net>
parents:
diff changeset
83 if not ecre.search(line):
f19dde90e473 applied unicode patch
Andrey Lebedev <kedder@users.sourceforge.net>
parents:
diff changeset
84 decoded.append((line, None))
f19dde90e473 applied unicode patch
Andrey Lebedev <kedder@users.sourceforge.net>
parents:
diff changeset
85 continue
f19dde90e473 applied unicode patch
Andrey Lebedev <kedder@users.sourceforge.net>
parents:
diff changeset
86
f19dde90e473 applied unicode patch
Andrey Lebedev <kedder@users.sourceforge.net>
parents:
diff changeset
87 parts = ecre.split(line)
f19dde90e473 applied unicode patch
Andrey Lebedev <kedder@users.sourceforge.net>
parents:
diff changeset
88 while parts:
f19dde90e473 applied unicode patch
Andrey Lebedev <kedder@users.sourceforge.net>
parents:
diff changeset
89 unenc = parts.pop(0)
f19dde90e473 applied unicode patch
Andrey Lebedev <kedder@users.sourceforge.net>
parents:
diff changeset
90 if unenc:
f19dde90e473 applied unicode patch
Andrey Lebedev <kedder@users.sourceforge.net>
parents:
diff changeset
91 if unenc.strip():
f19dde90e473 applied unicode patch
Andrey Lebedev <kedder@users.sourceforge.net>
parents:
diff changeset
92 decoded.append((unenc, None))
f19dde90e473 applied unicode patch
Andrey Lebedev <kedder@users.sourceforge.net>
parents:
diff changeset
93 if parts:
f19dde90e473 applied unicode patch
Andrey Lebedev <kedder@users.sourceforge.net>
parents:
diff changeset
94 charset, encoding = [s.lower() for s in parts[0:2]]
f19dde90e473 applied unicode patch
Andrey Lebedev <kedder@users.sourceforge.net>
parents:
diff changeset
95 encoded = parts[2]
f19dde90e473 applied unicode patch
Andrey Lebedev <kedder@users.sourceforge.net>
parents:
diff changeset
96 dec = ''
f19dde90e473 applied unicode patch
Andrey Lebedev <kedder@users.sourceforge.net>
parents:
diff changeset
97 if encoding == 'q':
f19dde90e473 applied unicode patch
Andrey Lebedev <kedder@users.sourceforge.net>
parents:
diff changeset
98 dec = qp_decode(encoded)
f19dde90e473 applied unicode patch
Andrey Lebedev <kedder@users.sourceforge.net>
parents:
diff changeset
99 elif encoding == 'b':
f19dde90e473 applied unicode patch
Andrey Lebedev <kedder@users.sourceforge.net>
parents:
diff changeset
100 dec = base64_decode(encoded)
f19dde90e473 applied unicode patch
Andrey Lebedev <kedder@users.sourceforge.net>
parents:
diff changeset
101 else:
f19dde90e473 applied unicode patch
Andrey Lebedev <kedder@users.sourceforge.net>
parents:
diff changeset
102 dec = encoded
f19dde90e473 applied unicode patch
Andrey Lebedev <kedder@users.sourceforge.net>
parents:
diff changeset
103
f19dde90e473 applied unicode patch
Andrey Lebedev <kedder@users.sourceforge.net>
parents:
diff changeset
104 if decoded and decoded[-1][1] == charset:
f19dde90e473 applied unicode patch
Andrey Lebedev <kedder@users.sourceforge.net>
parents:
diff changeset
105 decoded[-1] = (decoded[-1][0] + dec, decoded[-1][1])
f19dde90e473 applied unicode patch
Andrey Lebedev <kedder@users.sourceforge.net>
parents:
diff changeset
106 else:
f19dde90e473 applied unicode patch
Andrey Lebedev <kedder@users.sourceforge.net>
parents:
diff changeset
107 decoded.append((dec, charset))
f19dde90e473 applied unicode patch
Andrey Lebedev <kedder@users.sourceforge.net>
parents:
diff changeset
108 del parts[0:3]
f19dde90e473 applied unicode patch
Andrey Lebedev <kedder@users.sourceforge.net>
parents:
diff changeset
109 return decoded
f19dde90e473 applied unicode patch
Andrey Lebedev <kedder@users.sourceforge.net>
parents:
diff changeset
110
f19dde90e473 applied unicode patch
Andrey Lebedev <kedder@users.sourceforge.net>
parents:
diff changeset
111 def decode_header(hdr):
f19dde90e473 applied unicode patch
Andrey Lebedev <kedder@users.sourceforge.net>
parents:
diff changeset
112 """ Decodes rfc2822 encoded header and return utf-8 encoded string
f19dde90e473 applied unicode patch
Andrey Lebedev <kedder@users.sourceforge.net>
parents:
diff changeset
113 """
f19dde90e473 applied unicode patch
Andrey Lebedev <kedder@users.sourceforge.net>
parents:
diff changeset
114 if not hdr:
f19dde90e473 applied unicode patch
Andrey Lebedev <kedder@users.sourceforge.net>
parents:
diff changeset
115 return None
f19dde90e473 applied unicode patch
Andrey Lebedev <kedder@users.sourceforge.net>
parents:
diff changeset
116 outs = u""
f19dde90e473 applied unicode patch
Andrey Lebedev <kedder@users.sourceforge.net>
parents:
diff changeset
117 for section in _decode_header(hdr):
f19dde90e473 applied unicode patch
Andrey Lebedev <kedder@users.sourceforge.net>
parents:
diff changeset
118 charset = unaliasCharset(section[1])
f19dde90e473 applied unicode patch
Andrey Lebedev <kedder@users.sourceforge.net>
parents:
diff changeset
119 outs += unicode(section[0], charset or 'iso-8859-1', 'replace')
f19dde90e473 applied unicode patch
Andrey Lebedev <kedder@users.sourceforge.net>
parents:
diff changeset
120 return outs.encode('utf-8')
f19dde90e473 applied unicode patch
Andrey Lebedev <kedder@users.sourceforge.net>
parents:
diff changeset
121
f19dde90e473 applied unicode patch
Andrey Lebedev <kedder@users.sourceforge.net>
parents:
diff changeset
122 def encode_header(header):
f19dde90e473 applied unicode patch
Andrey Lebedev <kedder@users.sourceforge.net>
parents:
diff changeset
123 """ Will encode in quoted-printable encoding only if header
f19dde90e473 applied unicode patch
Andrey Lebedev <kedder@users.sourceforge.net>
parents:
diff changeset
124 contains non latin characters
f19dde90e473 applied unicode patch
Andrey Lebedev <kedder@users.sourceforge.net>
parents:
diff changeset
125 """
f19dde90e473 applied unicode patch
Andrey Lebedev <kedder@users.sourceforge.net>
parents:
diff changeset
126
f19dde90e473 applied unicode patch
Andrey Lebedev <kedder@users.sourceforge.net>
parents:
diff changeset
127 # Return empty headers unchanged
f19dde90e473 applied unicode patch
Andrey Lebedev <kedder@users.sourceforge.net>
parents:
diff changeset
128 if not header:
f19dde90e473 applied unicode patch
Andrey Lebedev <kedder@users.sourceforge.net>
parents:
diff changeset
129 return header
f19dde90e473 applied unicode patch
Andrey Lebedev <kedder@users.sourceforge.net>
parents:
diff changeset
130
f19dde90e473 applied unicode patch
Andrey Lebedev <kedder@users.sourceforge.net>
parents:
diff changeset
131 # return plain header if it is not contains non-ascii characters
f19dde90e473 applied unicode patch
Andrey Lebedev <kedder@users.sourceforge.net>
parents:
diff changeset
132 if hqre.match(header):
f19dde90e473 applied unicode patch
Andrey Lebedev <kedder@users.sourceforge.net>
parents:
diff changeset
133 return header
f19dde90e473 applied unicode patch
Andrey Lebedev <kedder@users.sourceforge.net>
parents:
diff changeset
134
f19dde90e473 applied unicode patch
Andrey Lebedev <kedder@users.sourceforge.net>
parents:
diff changeset
135 charset = 'utf-8'
f19dde90e473 applied unicode patch
Andrey Lebedev <kedder@users.sourceforge.net>
parents:
diff changeset
136 quoted = ''
f19dde90e473 applied unicode patch
Andrey Lebedev <kedder@users.sourceforge.net>
parents:
diff changeset
137 #max_encoded = 76 - len(charset) - 7
f19dde90e473 applied unicode patch
Andrey Lebedev <kedder@users.sourceforge.net>
parents:
diff changeset
138 for c in header:
f19dde90e473 applied unicode patch
Andrey Lebedev <kedder@users.sourceforge.net>
parents:
diff changeset
139 # Space may be represented as _ instead of =20 for readability
f19dde90e473 applied unicode patch
Andrey Lebedev <kedder@users.sourceforge.net>
parents:
diff changeset
140 if c == ' ':
f19dde90e473 applied unicode patch
Andrey Lebedev <kedder@users.sourceforge.net>
parents:
diff changeset
141 quoted += '_'
f19dde90e473 applied unicode patch
Andrey Lebedev <kedder@users.sourceforge.net>
parents:
diff changeset
142 # These characters can be included verbatim
f19dde90e473 applied unicode patch
Andrey Lebedev <kedder@users.sourceforge.net>
parents:
diff changeset
143 elif hqre.match(c):
f19dde90e473 applied unicode patch
Andrey Lebedev <kedder@users.sourceforge.net>
parents:
diff changeset
144 quoted += c
f19dde90e473 applied unicode patch
Andrey Lebedev <kedder@users.sourceforge.net>
parents:
diff changeset
145 # Otherwise, replace with hex value like =E2
f19dde90e473 applied unicode patch
Andrey Lebedev <kedder@users.sourceforge.net>
parents:
diff changeset
146 else:
f19dde90e473 applied unicode patch
Andrey Lebedev <kedder@users.sourceforge.net>
parents:
diff changeset
147 quoted += "=%02X" % ord(c)
f19dde90e473 applied unicode patch
Andrey Lebedev <kedder@users.sourceforge.net>
parents:
diff changeset
148 plain = 0
f19dde90e473 applied unicode patch
Andrey Lebedev <kedder@users.sourceforge.net>
parents:
diff changeset
149
f19dde90e473 applied unicode patch
Andrey Lebedev <kedder@users.sourceforge.net>
parents:
diff changeset
150 return '=?%s?q?%s?=' % (charset, quoted)
f19dde90e473 applied unicode patch
Andrey Lebedev <kedder@users.sourceforge.net>
parents:
diff changeset
151
f19dde90e473 applied unicode patch
Andrey Lebedev <kedder@users.sourceforge.net>
parents:
diff changeset
152 def unaliasCharset(charset):
f19dde90e473 applied unicode patch
Andrey Lebedev <kedder@users.sourceforge.net>
parents:
diff changeset
153 if charset:
f19dde90e473 applied unicode patch
Andrey Lebedev <kedder@users.sourceforge.net>
parents:
diff changeset
154 return charset.lower().replace("windows-", 'cp')
f19dde90e473 applied unicode patch
Andrey Lebedev <kedder@users.sourceforge.net>
parents:
diff changeset
155 #return charset_table.get(charset.lower(), charset)
f19dde90e473 applied unicode patch
Andrey Lebedev <kedder@users.sourceforge.net>
parents:
diff changeset
156 return None
f19dde90e473 applied unicode patch
Andrey Lebedev <kedder@users.sourceforge.net>
parents:
diff changeset
157
f19dde90e473 applied unicode patch
Andrey Lebedev <kedder@users.sourceforge.net>
parents:
diff changeset
158 def test():
f19dde90e473 applied unicode patch
Andrey Lebedev <kedder@users.sourceforge.net>
parents:
diff changeset
159 print encode_header("Contrary, Mary")
f19dde90e473 applied unicode patch
Andrey Lebedev <kedder@users.sourceforge.net>
parents:
diff changeset
160 #print unaliasCharset('Windows-1251')
f19dde90e473 applied unicode patch
Andrey Lebedev <kedder@users.sourceforge.net>
parents:
diff changeset
161
f19dde90e473 applied unicode patch
Andrey Lebedev <kedder@users.sourceforge.net>
parents:
diff changeset
162 if __name__ == '__main__':
f19dde90e473 applied unicode patch
Andrey Lebedev <kedder@users.sourceforge.net>
parents:
diff changeset
163 test()
f19dde90e473 applied unicode patch
Andrey Lebedev <kedder@users.sourceforge.net>
parents:
diff changeset
164
f19dde90e473 applied unicode patch
Andrey Lebedev <kedder@users.sourceforge.net>
parents:
diff changeset
165 # vim: et

Roundup Issue Tracker: http://roundup-tracker.org/