我在捣乱编码。
一方面,我有一个在UTF-8中响应我的url (我非常肯定,多亏了firebug插件)。
我使用以下代码打开url,读取UTF-8中的内容:
StreamReader reader = new StreamReader(response.GetResponseStream(),System.Text.Encoding.UTF8);另一方面,我有一个带有以下代码的转换xslt表:
<?xml version="1.0" encoding="utf-8"?>
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform" xmlns:msxsl="urn:schemas-microsoft-com:xslt" exclude-result-prefixes="msxsl">
<xsl:output method="xml" indent="yes"/>
<xsl:template match="@* | node()">
<xsl:copy>
<xsl:apply-templates select="@* | node()"/>
<br/>
hello
</xsl:copy>
</xsl:template>
</xsl:stylesheet>此xslt表也以UTF-8格式保存。
我使用以下代码将xml与xslt混合:
StringWriter writer = new StringWriter();
XslCompiledTransform transformer = new XslCompiledTransform();
transformer.Load(HttpContext.Current.Server.MapPath("xslt\\xsltsheet.xslt");
XmlWriterSettings xmlsettings = new XmlWriterSettings();
xmlsettings.Encoding = System.Text.Encoding.UTF8;
transformer.Transform(xmlreader, null, writer);
return writer;最后,im在and浏览器中呈现作者的内容,并得到以下错误:
无法显示XML页,无法使用样式表查看XML输入。请更正错误,然后单击“刷新”按钮,或稍后再试。 从当前编码切换到不支持的指定编码。错误处理资源‘http://localhost:2541/Results。
我想知道在哪里可以找到UTF-16编码,计算如下:
任何帮助都将不胜感激。
提前谢谢。
诚挚的问候。
何塞。
发布于 2010-05-18 14:20:37
因为Encoding属性返回UTF-16编码,所以编写器会将其写入。而不是使用StringWriter (内存中的UTF-16 ),您可以初始化一个XmlTextWriter实例来使用UTF-8和MemoryStream作为后备存储。
编辑:另一种解决问题的方法是从StringWriter继承并覆盖Encoding属性以返回您喜欢的编码(例如,在您的情况下是UTF8 )。这个想法来自于一个罗伯特·McLaws撰写的博客文章。
public class UTF8StringWriter: StringWriter {
public UTF8StringWriter() {}
public UTF8StringWriter(IFormatProvider formatProvider): base(formatProvider) {}
public UTF8StringWriter(StringBuilder sb): base(sb) {}
public UTF8StringWriter(StringBuilder sb, IFormatProvider formatProvider): base(sb, formatProvider) {}
public override Encoding Encoding {
get {
return Encoding.UTF8;
}
}
}你不是一个人有这个问题..。例如,请参见MSDN社区评论 (在底部)或下面的博客帖子。
发布于 2010-05-18 14:20:54
试着使用:
StringBuilder stringBuilder = new StringBuilder();
using (XmlWriter writer = XmlWriter.Create(stringBuilder, transformer.OutputSettings))
{
xsl.Transform(xmlreader, writer);
}https://stackoverflow.com/questions/2858024
复制相似问题