将文件转换为utf-8但字符已被破坏

sen*_*ale 3 c#

foreach (var f in new DirectoryInfo(@"...").GetFiles("*.cs", SearchOption.AllDirectories)) {
  string s = File.ReadAllText(f.FullName);
  File.WriteAllText (f.FullName, s, Encoding.UTF8);
}
Run Code Online (Sandbox Code Playgroud)

但转换字符时会被破坏.我如何防止čćžšđ不会被销毁?

手动我fisrt复制文本然后将文件转换为utf-8并粘贴文本和字符是好的.但在这里我有200多个文件,这太多了.

Ode*_*ded 5

使用时File.ReadAllText,请确保使用正确的编码读取文件.例如,使用ASCII文件:

string s = File.ReadAllText(f.FullName, Encoding.ASCII);
Run Code Online (Sandbox Code Playgroud)

如果使用不正确的编码,则在读取期间该值将被"销毁".

您可以Encoding使用代码页ID使用正确的代码页创建新的(请参阅页面的ID):

var myEncoding = new Encoding(10081); // for Turkish (Mac)
string s = File.ReadAllText(f.FullName, myEncoding);
Run Code Online (Sandbox Code Playgroud)