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;
}