From d7c607cb1da295364325eefd7ad19cc54c9d8ec1 Mon Sep 17 00:00:00 2001 From: rfm Date: Mon, 9 Sep 2013 06:50:42 +0000 Subject: [PATCH] make specified encoding take precedence over whether the parser is set for http git-svn-id: svn+ssh://svn.gna.org/svn/gnustep/libs/base/trunk@37053 72102866-910b-0410-8b05-ffd578937521 --- Source/Additions/GSMime.m | 20 +++++++++++++++++--- 1 file changed, 17 insertions(+), 3 deletions(-) diff --git a/Source/Additions/GSMime.m b/Source/Additions/GSMime.m index 11ae6ea1d..e8287e9ef 100644 --- a/Source/Additions/GSMime.m +++ b/Source/Additions/GSMime.m @@ -2919,9 +2919,23 @@ unfold(const unsigned char *src, const unsigned char *end, BOOL *folded) s = [NSStringClass allocWithZone: NSDefaultMallocZone()]; if (1 == flags.isHttp) { - s = [s initWithBytes: beg - length: src - beg - encoding: NSISOLatin1StringEncoding]; + /* Old web code tends to use latin1 (and RFCs say we + * should use latin1 for headers). However newer systems + * tend to use utf-8. We default to latin1 (as specified + * in the RFCs) unless the encoding has been set to utf-8. + */ + if (NSUTF8StringEncoding == _defaultEncoding) + { + s = [s initWithBytes: beg + length: src - beg + encoding: NSUTF8StringEncoding]; + } + else + { + s = [s initWithBytes: beg + length: src - beg + encoding: NSISOLatin1StringEncoding]; + } } else {