diff --git a/mozilla/extensions/transformiix/source/xslt/txMozillaTextOutput.cpp b/mozilla/extensions/transformiix/source/xslt/txMozillaTextOutput.cpp index e44b0ffd9d6..921dc3cc893 100644 --- a/mozilla/extensions/transformiix/source/xslt/txMozillaTextOutput.cpp +++ b/mozilla/extensions/transformiix/source/xslt/txMozillaTextOutput.cpp @@ -49,6 +49,7 @@ #include "nsNetUtil.h" #include "nsIDOMNSDocument.h" #include "nsIParser.h" +#include "nsICharsetAlias.h" static NS_DEFINE_CID(kXMLDocumentCID, NS_XMLDOCUMENT_CID); @@ -187,9 +188,16 @@ void txMozillaTextOutput::createResultDocument(nsIDOMDocument* aSourceDocument, // Set the charset if (!mOutputFormat.mEncoding.IsEmpty()) { - doc->SetDocumentCharacterSet( - NS_LossyConvertUTF16toASCII(mOutputFormat.mEncoding)); - doc->SetDocumentCharacterSetSource(kCharsetFromOtherComponent); + NS_LossyConvertUTF16toASCII charset(mOutputFormat.mEncoding); + nsCAutoString canonicalCharset; + nsCOMPtr calias = + do_GetService("@mozilla.org/intl/charsetalias;1"); + + if (calias && + NS_SUCCEEDED(calias->GetPreferred(charset, canonicalCharset))) { + doc->SetDocumentCharacterSet(canonicalCharset); + doc->SetDocumentCharacterSetSource(kCharsetFromOtherComponent); + } } else { doc->SetDocumentCharacterSet(sourceDoc->GetDocumentCharacterSet()); diff --git a/mozilla/extensions/transformiix/source/xslt/txMozillaXMLOutput.cpp b/mozilla/extensions/transformiix/source/xslt/txMozillaXMLOutput.cpp index 5f184e79f8f..0674c2ca568 100644 --- a/mozilla/extensions/transformiix/source/xslt/txMozillaXMLOutput.cpp +++ b/mozilla/extensions/transformiix/source/xslt/txMozillaXMLOutput.cpp @@ -71,6 +71,7 @@ #include "nsIStyleSheetLinkingElement.h" #include "nsIDocumentTransformer.h" #include "nsICSSLoader.h" +#include "nsICharsetAlias.h" extern nsINameSpaceManager* gTxNameSpaceManager; @@ -738,9 +739,16 @@ txMozillaXMLOutput::createResultDocument(const nsAString& aName, PRInt32 aNsID, // Set the charset if (!mOutputFormat.mEncoding.IsEmpty()) { - doc->SetDocumentCharacterSet( - NS_LossyConvertUTF16toASCII(mOutputFormat.mEncoding)); - doc->SetDocumentCharacterSetSource(kCharsetFromOtherComponent); + NS_LossyConvertUTF16toASCII charset(mOutputFormat.mEncoding); + nsCAutoString canonicalCharset; + nsCOMPtr calias = + do_GetService("@mozilla.org/intl/charsetalias;1"); + + if (calias && + NS_SUCCEEDED(calias->GetPreferred(charset, canonicalCharset))) { + doc->SetDocumentCharacterSet(canonicalCharset); + doc->SetDocumentCharacterSetSource(kCharsetFromOtherComponent); + } } // Set the mime-type diff --git a/mozilla/parser/htmlparser/public/nsIParser.h b/mozilla/parser/htmlparser/public/nsIParser.h index d8b1d2a1393..8edb63fae18 100644 --- a/mozilla/parser/htmlparser/public/nsIParser.h +++ b/mozilla/parser/htmlparser/public/nsIParser.h @@ -108,9 +108,10 @@ enum eParserDocType { #define kCharsetFromMetaTag 9 #define kCharsetFromByteOrderMark 10 #define kCharsetFromChannel 11 -#define kCharsetFromParentForced 12 -#define kCharsetFromUserForced 13 -#define kCharsetFromOtherComponent 14 +#define kCharsetFromOtherComponent 12 +// Levels below here will be forced onto childframes too +#define kCharsetFromParentForced 13 +#define kCharsetFromUserForced 14 #define kCharsetFromPreviousLoading 15 enum eStreamState {eNone,eOnStart,eOnDataAvail,eOnStop};