[英]How to change encoding in TextWriter object?
我有一个xml,我通过API在另一个resurse发送。 我是通过XDocument创建的:
XDocument xDoc = new XDocument(
new XDeclaration("1.0", "utf-8", "yes"),
new XElement("Entity",new XAttribute("Type", "attribute1"),
new XElement("Fields",...
当我把它放在它没有声明的请求中。 所以我接下来做:
StringBuilder builder = new StringBuilder();
TextWriter writer = new StringWriter(builder);
using (writer)
{
xDoc.Save(writer);
}
但现在TextWriter将xml中的编码更改为utf-16。 我需要在utf-8上再次更改它。
这看起来很奇怪,但是如果要在xml中输出到utf-8编码的string
,看起来你必须StringWriter
。
public class Program
{
public static void Main(string[] args)
{
XDocument xDoc = new XDocument(
new XDeclaration("1.0", "utf-8", "yes"),
new XElement("Entity",new XAttribute("Type", "attribute1")));
StringBuilder builder = new StringBuilder();
using (TextWriter writer = new EncodingStringWriter(builder, Encoding.UTF8))
{
xDoc.Save(writer);
}
Console.WriteLine(builder.ToString());
}
}
public class EncodingStringWriter : StringWriter
{
private readonly Encoding _encoding;
public EncodingStringWriter(StringBuilder builder, Encoding encoding) : base(builder)
{
_encoding = encoding;
}
public override Encoding Encoding
{
get { return _encoding; }
}
}
尝试
TextWriter ws = new StreamWriter(path, true, Encoding.UTF8);
要么
TextWriter ws = new StreamWriter(stream, Encoding.UTF8);
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.