Mercurial > cpython-lru_cache-weakref
changeset 25135:0f0016632be4 legacy-trunk
_formatparam(), set_param(): RFC 2231 encoding support by Oleg
Broytmann in SF patch #600096. Specifically, the former function now
encodes the triplets, while the latter adds optional charset and
language arguments.
| author | Barry Warsaw <barry@python.org> |
|---|---|
| date | Fri, 06 Sep 2002 03:55:04 +0000 |
| parents | cc53ddb6424f |
| children | 0d92eb63db89 |
| files | Lib/email/Message.py |
| diffstat | 1 files changed, 11 insertions(+), 3 deletions(-) [+] |
line wrap: on
line diff
--- a/Lib/email/Message.py Fri Sep 06 03:41:27 2002 +0000 +++ b/Lib/email/Message.py Fri Sep 06 03:55:04 2002 +0000 @@ -38,8 +38,9 @@ # are (charset, language, value). charset is a string, not a Charset # instance. if isinstance(value, TupleType): - # Convert to ascii, ignore language - value = unicode(value[2], value[0]).encode("ascii") + # Encode as per RFC 2231 + param += '*' + value = Utils.encode_rfc2231(value[2], value[0], value[1]) # BAW: Please check this. I think that if quote is set it should # force quoting even if not necessary. if quote or tspecials.search(value): @@ -543,7 +544,8 @@ return v return failobj - def set_param(self, param, value, header='Content-Type', requote=1): + def set_param(self, param, value, header='Content-Type', requote=1, + charset=None, language=''): """Set a parameter in the Content-Type: header. If the parameter already exists in the header, its value will be @@ -556,7 +558,13 @@ An alternate header can specified in the header argument, and all parameters will be quoted as appropriate unless requote is set to a false value. + + If charset is specified the parameter will be encoded according to RFC + 2231. In this case language is optional. """ + if not isinstance(value, TupleType) and charset: + value = (charset, language, value) + if not self.has_key(header) and header.lower() == 'content-type': ctype = 'text/plain' else:
