csharp 【C#】的XmlWriterの编码

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了csharp 【C#】的XmlWriterの编码相关的知识,希望对你有一定的参考价值。

static void Main(string[] args)
{
	// StrinBuilderだと、なぜかUnicode(UTF-16)になってしまう。 
	// MSDN(http://msdn.microsoft.com/ja-jp/library/system.xml.xmlwritersettings.encoding.aspx)によると、
	// XmlWriterSettingsのEncodingよりも、基になるライターのエンコーディングが優先されるようだ。StringWriterも同様らしい。 
	var str = new StringBuilder();
	using (var writer = XmlWriter.Create(str, new XmlWriterSettings() { Encoding = Encoding.GetEncoding("Shift-JIS") })) {
		writer.WriteStartElement("Root");
		writer.WriteElementString("Name", "うお座の花");
		writer.WriteFullEndElement();
	}
	System.Diagnostics.Debug.WriteLine(str.ToString()); // <?xml version="1.0" encoding="utf-16"?><Root><Name>うお座の花</Name></Root>


	// xmlヘッダーを書き換える方法もあるが、MemoryStreamを使うことでも解消できる。 
	using (var stream = new MemoryStream()) {
		using (var writer = XmlWriter.Create(stream, new XmlWriterSettings() { Encoding = Encoding.GetEncoding("Shift-JIS") })) {
			writer.WriteStartElement("Root");
			writer.WriteElementString("Name", "うお座の花");
			writer.WriteFullEndElement();
		}

		System.Diagnostics.Debug.WriteLine(Encoding.GetEncoding("Shift-JIS").GetString(stream.ToArray())); // <?xml version="1.0" encoding="shift_jis"?><Root><Name>うお座の花</Name></Root>
	}
}

以上是关于csharp 【C#】的XmlWriterの编码的主要内容,如果未能解决你的问题,请参考以下文章

csharp 【C#】LINQ.Joinの提示

csharp 【C#】LINQ.ToLookupの提示

csharp 【C#】LINQ.OrderByの提示

csharp C#のビット计算の仕方

csharp 【C#,表格】的DataGridViewの列の工具提示に改行を入れる

csharp C#5.0 async / awaitでの主要メソッドの书き方