diff --git a/mozilla/htmlparser/src/nsHTMLContentSinkStream.cpp b/mozilla/htmlparser/src/nsHTMLContentSinkStream.cpp index ec05df91d76..73cf8af52ad 100644 --- a/mozilla/htmlparser/src/nsHTMLContentSinkStream.cpp +++ b/mozilla/htmlparser/src/nsHTMLContentSinkStream.cpp @@ -232,8 +232,11 @@ nsHTMLContentSinkStream::InitEncoder() return res; // SaveAsCharset requires a const char* in its first argument: nsCAutoString charsetCString (charsetName); + // For ISO-8859-1 only, convert to entity first (always generate entites like  ). res = mUnicodeEncoder->Init(charsetCString, - nsISaveAsCharset::attr_htmlTextDefault, + charsetName.EqualsIgnoreCase("ISO-8859-1") ? + nsISaveAsCharset::attr_htmlTextDefault : + nsISaveAsCharset::attr_EntityAfterCharsetConv + nsISaveAsCharset::attr_FallbackDecimalNCR, nsIEntityConverter::html40); return res; } diff --git a/mozilla/mailnews/base/util/nsMsgI18N.cpp b/mozilla/mailnews/base/util/nsMsgI18N.cpp index 35862395802..897937c8b07 100644 --- a/mozilla/mailnews/base/util/nsMsgI18N.cpp +++ b/mozilla/mailnews/base/util/nsMsgI18N.cpp @@ -431,8 +431,11 @@ nsresult nsMsgI18NSaveAsCharset(const char* contentType, const char *charset, co // plain text - charset conv then fallback to '?' char charset_buf[kMAX_CSNAME+1]; if (bTEXT_HTML) { + // For ISO-8859-1 only, convert to entity first (always generate entites like  ). res = aConv->Init(aCharset.ToCString(charset_buf, kMAX_CSNAME+1), - nsISaveAsCharset::attr_htmlTextDefault, + aCharset.EqualsIgnoreCase("ISO-8859-1") ? + nsISaveAsCharset::attr_htmlTextDefault : + nsISaveAsCharset::attr_EntityAfterCharsetConv + nsISaveAsCharset::attr_FallbackDecimalNCR, nsIEntityConverter::html40); } else { diff --git a/mozilla/parser/htmlparser/src/nsHTMLContentSinkStream.cpp b/mozilla/parser/htmlparser/src/nsHTMLContentSinkStream.cpp index ec05df91d76..73cf8af52ad 100644 --- a/mozilla/parser/htmlparser/src/nsHTMLContentSinkStream.cpp +++ b/mozilla/parser/htmlparser/src/nsHTMLContentSinkStream.cpp @@ -232,8 +232,11 @@ nsHTMLContentSinkStream::InitEncoder() return res; // SaveAsCharset requires a const char* in its first argument: nsCAutoString charsetCString (charsetName); + // For ISO-8859-1 only, convert to entity first (always generate entites like  ). res = mUnicodeEncoder->Init(charsetCString, - nsISaveAsCharset::attr_htmlTextDefault, + charsetName.EqualsIgnoreCase("ISO-8859-1") ? + nsISaveAsCharset::attr_htmlTextDefault : + nsISaveAsCharset::attr_EntityAfterCharsetConv + nsISaveAsCharset::attr_FallbackDecimalNCR, nsIEntityConverter::html40); return res; }