控制台应用程序中的非英文字符翻译不正确

本文关键字:字符 翻译 不正确 文字符 应用程序 控制台 | 更新日期: 2023-09-27 18:19:58

环境:Visual Studio 2008 SP1

我的文本文件中有以下行:

using (var reader = File.OpenText(@"c:'temp'DATA.txt"))
{
  ...
  string textLine = "ist where [name]='Curaçao')"
}

请注意非英文字符。

每当reader.ReadLine达到这一点时,它就会在我的控制台应用程序中成为一个问号。

有什么想法可以保存吗?

控制台应用程序中的非英文字符翻译不正确

您应该在阅读器中使用字符集。然而,控制台不支持非ASCII字符!

这很可能是编码问题-reader使用的编码与文件所在的编码不同。

请确保两者使用相同的编码。

File.OpenText将使用UTF8Encoding——如果您的文件使用不同的编码,这很可能是问题所在。

要指定编码,请使用接受Encoding参数的构造函数构造StreamReader

using (var reader = new StreamReader(@"c:'temp'DATA.txt", 
                                               Encoding.GetEncoding(860)))
{
  ...
  string textLine = "ist where [name]='Curaçao')"
}

在上面的例子中,我使用的是葡萄牙语编码。