1.1 --- a/vContent.py Thu Oct 16 21:55:30 2008 +0200
1.2 +++ b/vContent.py Fri Oct 17 00:40:32 2008 +0200
1.3 @@ -223,25 +223,28 @@
1.4
1.5 # Decode the value.
1.6
1.7 - value = self.decode("".join(value_lines), parameters.get("ENCODING"))
1.8 + value = self.decode("".join(value_lines), parameters)
1.9
1.10 return name, parameters, value
1.11
1.12 - def decode(self, value, encoding):
1.13 + def decode(self, value, parameters):
1.14 +
1.15 + "Decode the 'value' using the given 'parameters'."
1.16
1.17 - "Decode the 'value' with the given 'encoding'."
1.18 + encoding = parameters.get("ENCODING")
1.19 + charset = parameters.get("CHARSET")
1.20
1.21 - # NOTE: Assuming ISO 8869-1 for the character set.
1.22 + # NOTE: Introducing newline conversions.
1.23 + # Replace quoted characters (see 4.3.11 in RFC 2445).
1.24 +
1.25 + value = value.replace("\r", "").replace("\\N", "\n").replace("\\n", "\n").replace("\\,", ",").replace("\\;", ";")
1.26
1.27 if encoding == "QUOTED-PRINTABLE":
1.28 - return unicode(quopri.decodestring(value), "iso-8859-1")
1.29 + return unicode(quopri.decodestring(value), charset or "iso-8859-1")
1.30 elif encoding == "BASE64":
1.31 return base64.decodestring(value)
1.32 else:
1.33 - # NOTE: Introducing newline conversions.
1.34 - # Replace quoted characters (see 4.3.11 in RFC 2445).
1.35 -
1.36 - return value.replace("\r", "").replace("\\N", "\n").replace("\\n", "\n").replace("\\,", ",").replace("\\;", ";")
1.37 + return value
1.38
1.39 class Parser:
1.40