【发布时间】:2012-05-31 23:27:15
【问题描述】:
我正在使用 ReadAllText 读取文件
String[] values = File.ReadAllText(@"c:\\c\\file.txt").Split(';');
int i = 0;
foreach (String s in values)
{
System.Console.WriteLine("output: {0} {1} ", i, s);
i++;
}
如果我尝试读取某些文件,有时会返回错误的字符(对于 ÖÜÄÀ...)。输出类似'?',是因为编码有问题:
output: 0 TEST
output: 1 A??O?
一种解决方案是在 ReadAllText 中设置编码,比如ReadAllText(@"c:\\c\\file.txt", Encoding.UTF8) 这样可以解决问题。但如果我仍然会得到'?作为输出?如果我不知道文件的编码怎么办?如果每个文件都有不同的编码怎么办?用 c# 做这件事的最好方法是什么?谢谢
【问题讨论】:
-
你需要知道编码是什么。并且没有 100% 可靠的方法可以完全根据文件的内容进行查找。