xsl-list
[Top] [All Lists]

Re: [xsl] IE error | Switch from current encoding to specified encoding not supported.

2007-10-03 10:39:28
ASP Classic here. =)

On 10/3/07, Abel Braaksma <abel(_dot_)online(_at_)xs4all(_dot_)nl> wrote:
Hi Steve, William,

This is one way to do it. The source of the original problem was
actually with the settings for the internal XML Writer, which defaults
to UTF-16 (partially true, real UTF-16 is not supported by Microsoft,
notably, MS does not support surrogate pairs) and if you "just" write
the results of an XsltProcessor, it ends up being UTF-16.

By setting a custom writer with your properties, for the encoding you
will effectively create the correct output stream in one go, without
having to use Response.Write.Replace. I.e., in C# it looks a bit like this:

    // instantiate an XmlWriter
    XmlWriter xmlWriter = XmlWriter.Create("output.xml");
    xmlWriter.Settings.Encoding = "UTF-8";
    XslCompiledTransform xslt = new XslCompiledTransform(true);

    // enable document function and scripting
    XsltSettings xsltSettings = new XsltSettings(true, true);

    // load stylesheet and transform to "output.xml" (but you can use
any stream)
    xslt.Load("Xslt/test.xslt", xsltSettings, null);
    xmlWriter = XmlWriter.Create("output.xml");
    xslt.Transform("Xslt/test.xslt", xsltArgs, xmlWriter);
    xmlWriter.Close();


This is using the classes from ASP.NET 2.0 so you if you want to use
this you may have to adjust it to your situation.

Cheers,
-- Abel Braaksma



W Charlton wrote:
Steve,

If you are using ASP then you will need to add a replace function.

Below is a snip of some code we use.

Set XSLTemp = Server.CreateObject(MSXML2.XSLTemplate.3.0)
      Set XSLTemp.stylesheet = XSLDoc 'variable set higher up in page e.g.
c:\myfiles\myxsl.xsl
      Set XSLProc = XSLTemp.createProcessor
      XSLProc.input = XMLDoc 'variable set higher up in page e.g.
c:\myfiles\myxsl.xml
      XSLProc.addParameter "MyParam", "MyParamValue"
     XSLProc.transform
     Response.Charset = "ISO-8859-15"

     Response.Write Replace(XSLProc.output, "UTF-16", "ISO-8859-15")

If you want UTF-8 replace ISO-8859-15 (Latin 1 extended) with UTF-8


William Charlton
The yMonda team
yMonda Limited
w: www.ymonda.net



--~------------------------------------------------------------------
XSL-List info and archive:  http://www.mulberrytech.com/xsl/xsl-list
To unsubscribe, go to: http://lists.mulberrytech.com/xsl-list/
or e-mail: 
<mailto:xsl-list-unsubscribe(_at_)lists(_dot_)mulberrytech(_dot_)com>
--~--



--~------------------------------------------------------------------
XSL-List info and archive:  http://www.mulberrytech.com/xsl/xsl-list
To unsubscribe, go to: http://lists.mulberrytech.com/xsl-list/
or e-mail: <mailto:xsl-list-unsubscribe(_at_)lists(_dot_)mulberrytech(_dot_)com>
--~--