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

use*_*969 2 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);
}
Run Code Online (Sandbox Code Playgroud)

有关如何保存文件而不进行任何编码的任何建议?

Mar*_*ell 14

有关如何保存文件而不进行任何编码的任何建议?

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

... new StreamWriter(path, false, new UTF8Encoding(true))
Run Code Online (Sandbox Code Playgroud)

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

... new StreamWriter(path, false, Encoding.Default)
Run Code Online (Sandbox Code Playgroud)

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

... new StreamWriter(path, false, Encoding.GetEncoding(874))
Run Code Online (Sandbox Code Playgroud)

  • @ user231465没有单一的ansi.你的意思是ascii(仅限7位),或者你的意思是**一些特定的代码页**,你需要知道它*是*的代码页.已经注意到当前的系统默认代码页是"Encoding.Default".但请注意,在服务器/客户端scernaio中,服务器的默认代码页和客户端的默认代码页可能不同. (2认同)

Gei*_*som 6

根据文档,具有流作为输入的StreamWriter将默认为UTF-8.

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