我正在使用此功能从文件中读取文本行:
string[] postFileLines = System.IO.File.ReadAllLines(pstPathTextBox.Text);
在战略要点插入一些额外的行,然后将文本行写回文件:
TextWriter textW = new StreamWriter(filePath);
for (int i = 0; i < linesToWrite.Count; i++)
{
textW.WriteLine(linesToWrite[i]);
}
textW.Close();
在我正在阅读的文本文件包含国际或特殊字符之前,这非常有效。写回文件时,我没有得到相同的字符 - 它是一个盒子。
例如:
之前= W:\Contrat à faire aujourd
hui \`
之后= W:\Contrat � faire aujourd
hui \`
此网页将其描述为问号,但在文本文件中,它是一个矩形白框。
有没有办法在我的应用程序中包含正确的编码才能处理这些字符?或者,如果没有,抛出一个警告说它无法正确写出给定的行?
答案 0 :(得分:2)
添加如下编码:
File.ReadAllLines(path, Encoding.UTF8);
和
new StreamWriter(filePath, Encoding.UTF8);
希望它有所帮助。
答案 1 :(得分:0)
使用这个,对我有用
string txt = System.IO.File.ReadAllText(inpPath, Encoding.GetEncoding("iso-8859-1"));
答案 2 :(得分:0)
您也可以在写入文件时尝试UTF编码,
textW.WriteLine(linesToWrite[i],Encoding.UTF8);
答案 3 :(得分:0)
您可能需要撰写Single-byte Character Sets
使用Encoding.GetEncodings()
,您可以轻松获得所有可能的编码。 (“DOS”编码为System.Text.SBCSCodePageEncoding
)
在您的情况下,您可能需要使用
File.ReadAllLines(path, Encoding.GetEncoding("IBM850"));
和
new StreamWriter(filePath, Encoding.GetEncoding("IBM850"));
Bonnejournée! ;)