非英语字符在控制台应用程序中无法正确翻译

时间:2012-01-11 19:54:27

标签: c#

环境:Visual Studio 2008 SP1

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

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

请注意非英文字符。

每当 reader.ReadLine 到达此点时,它会在我的控制台应用程序中将其变为问号。

任何想法如何保存?

2 个答案:

答案 0 :(得分:2)

您应该在阅读器中使用charset。但是,控制台不支持非ASCII字符!

答案 1 :(得分:1)

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

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

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

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

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

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