保存文本文件时的默认编码是什么

时间:2011-11-14 11:38:51

标签: c# encoding

保存文本文件时,客户端会在每个货币符号前面显示“”字符。

我尝试了以下但仍然变得奇怪的字符

using (StreamWriter sr = new StreamWriter(path, false, System.Text.Encoding.UTF8))
{
    sr.Write(text);
}
using (StreamWriter sr = File.CreateText(path))
{
    sr.Write(text);
}

有关如何在不进行任何编码的情况下保存文件的任何建议?

3 个答案:

答案 0 :(得分:14)

  

有关如何在不进行任何编码的情况下保存文件的任何建议?

这个问题毫无意义; “encoding”是将字符串字符转换为字节以存储/传输(例如在磁盘上)的过程。任何文本内容都必须具有 编码。如果您将其保存为UTF8,那么阅读它的人也必须将其作为读取为 UTF8。您可以尝试包含BOM:

... new StreamWriter(path, false, new UTF8Encoding(true))

或者,找出默认情况下配置使用的编码/代码页,并使用它(Encoding.Default);例如:

... new StreamWriter(path, false, Encoding.Default)

如果您的用户在代码页874(又名“泰语”)中表明他们需要它,那么您将使用:

... new StreamWriter(path, false, Encoding.GetEncoding(874))

答案 1 :(得分:6)

将流作为输入的StreamWriter默认为UTF-8 according to the documentation

  

此构造函数使用UTF-8编码创建一个没有字节顺序标记(BOM)的StreamWriter,因此其GetPreamble方法返回一个空字节数组。

答案 2 :(得分:3)

这取决于您计算机的本地设置。如果您想确保按预期保存所有内容,则应自行指定编码。

请参阅:http://msdn.microsoft.com/en-us/library/system.text.encoding.default.aspx