我用ANSI或UTF-8编码读取txt文件。 Txt文件包含以下行:
79005213750:hello
79005213751:привет
79005213752:серега
使用以下代码阅读:
TextReader readFile = new StreamReader(file_path, Encoding.Default);
foreach (string line in ReadLineFromFile(readFile))
{}
private static IEnumerable<string> ReadLineFromFile(TextReader fileReader)
{
using (fileReader)
{
string currentLine;
while ((currentLine = fileReader.ReadLine()) != null)
{
yield return currentLine;
}
}
}
在用线条进行所有操作之后,我保存了它们:
SaveFileDialog saveFile1 = new SaveFileDialog();
saveFile1.DefaultExt = "*.txt";
saveFile1.Filter = "TXT Files|*.txt";
saveFile1.FileName = "rus_number-pass";
if (saveFile1.ShowDialog() == System.Windows.Forms.DialogResult.OK && saveFile1.FileName.Length > 0)
{
using (System.IO.StreamWriter file = new System.IO.StreamWriter(saveFile1.FileName))
foreach (string line in digits_ru)
{
file.WriteLine(line);
}
}
我收到了:
79005213750:hello
79005213751:привет
79005213752:серега
但是期待:
79005213750:hello
79005213751:привет
79005213752:серега
你帮我吗?我在这个问题上杀了2天,但无法解决它= \
答案 0 :(得分:0)
我相信您正在使用一种编码(Encoding.Default)进行读取操作,而另一种编码(UTF8)则用于写入。
使用System.IO.StreamWriter构造函数的不同重载。例如。这一个
public StreamWriter(string path, bool append, Encoding encoding)
并且当编码参数传递相同的默认编码时,您将传递给Reader。
TextReader readFile = new StreamReader(file_path, Encoding.Default);
我认为在您看到输出文件中的预期字符之后。
顺便说一下。请注意,不建议使用Encoding.Default。
答案 1 :(得分:0)
您可以使用代码页编号指定目标编码:
var encoding = Encoding.GetEncoding(1251);
哪个是俄语,这就是我所需要的。