как эскейпить unicode строку в iso8859-1 ?
От: gainidea  
Дата: 16.11.05 18:58
Оценка:
Нужно на месте несуществующих в iso8859-1 символов получить xml entity
XSLT processor их не эскейпит, либо в UTF-16 пишет забивая на encoding в xsl:output

String xsltString =
    @"<xsl:stylesheet xmlns:xsl='http://www.w3.org/1999/XSL/Transform' version='1.0'>
        <xsl:output method='xml' encoding='iso8859-1'/>
        <xsl:template match='body'>
            <xsl:copy>
            <xsl:apply-templates/>
            </xsl:copy>
        </xsl:template>
        </xsl:stylesheet>";

XslTransform xslt = new XslTransform();

xslt.Load(new XPathDocument(new StringReader(xsltString)), null, null);

string str = "<body>привет на русском, ёыпавып2ё12ё2ё2ёвыапывп чхъюэ</body>";

XPathDocument input = new XPathDocument(new StringReader(str));
StringWriter writer = new StringWriter();
xslt.Transform(input, null, writer, null);
MessageBox.Show(writer.ToString());


если выводить в файл,
StreamWriter writer = new StreamWriter(@"C:\test.xml", false, Encoding.GetEncoding("iso8859-1"));

то пишет в iso8859-1, но такие '?' символы а не entity

кто знает в чём тут проблема ?
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.