Внутренне .NET использует Юникод - ОБНОВЛЕНО - UTF-16.
Однако, если вы записываете строку в файл, вы должны указать кодировку. Если вы этого не сделаете, .NET выберет для вас кодировку - обычно это UTF8 .
Вот отраженный File.WriteAllText:
public static void WriteAllText(string path, string contents)
{
if (path == null)
{
throw new ArgumentNullException("path");
}
if (path.Length == 0)
{
throw new ArgumentException(Environment.GetResourceString("Argument_EmptyPath"));
}
InternalWriteAllText(path, contents, StreamWriter.UTF8NoBOM);
}