我正在尝试使用以下代码从文本文件中读取字符(£
)。
public static List<string> ReadAllLines(string path, bool discardEmptyLines, bool doTrim)
{
var retVal = new List<string>();
if (string.IsNullOrEmpty(path) || !File.Exists(path)) {
Comm.File.Log.LogError("ReadAllLines", string.Format("Could not load file: {0}", path));
return retVal;
}
//StreamReader sr = null;
StreamReader sr = new StreamReader(path, Encoding.Default));
try {
sr = File.OpenText(path);
while (sr.Peek() >= 0) {
var line = sr.ReadLine();
if (discardEmptyLines && (line == null || string.IsNullOrEmpty(line.Trim()))) {
continue;
}
if (line != null) {
retVal.Add(doTrim ? line.Trim() : line);
}
}
}
catch (Exception ex) {
Comm.File.Log.LogGeneralException("ReadAllLines", ex);
}
finally {
if (sr != null) {
sr.Close();
}
}
return retVal;
}
但是我的代码没有正确阅读£
,正在阅读该字符�
请指导我需要做些什么来阅读特殊字符。
提前致谢。
答案 0 :(得分:1)
您正在阅读的文件编码与Encoding.Default
的编码不同。它可能是UTF-8。尝试将UTF-8用于此特定文件。有关更多通用用法,请参阅Determining the Encoding of a text file。
答案 1 :(得分:0)
看起来像编码问题。尝试使用UTF-8(或Unicode)编码而不是默认编码来创建StreamReader
。
StreamReader sr = new StreamReader(path, Encoding.UTF8));
答案 2 :(得分:0)
尝试将Encoding.Default
替换为Encoding.GetEncoding(437)
答案 3 :(得分:0)
可以通过两种方式向流阅读器提供编码信息。
1)使用另存为选项保存文件,然后从Windows下拉列表中选择相应的编码选项。 see screenshot 2)如果您的文件本质上是动态的,请使用带有StreamReader的Encoding.GetEncoding()