0

我正在使用此函数从文件中读取文本行:

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辉\`

之后 =W:\Contrat � faire aujourd辉\`

该网页将其描绘为问号,但在文本文件中它是一个矩形白框。

有没有办法在我的应用程序中包含正确的编码以便能够处理这些字符?或者,如果没有,抛出一个警告说它不能正确地写给定的行?

4

4 回答 4

2

像这样添加encondig:

File.ReadAllLines(path, Encoding.UTF8);

new StreamWriter(filePath, Encoding.UTF8);

希望能帮助到你。

于 2012-11-28T23:25:49.900 回答
0

使用这个,对我有用

string txt = System.IO.File.ReadAllText(inpPath, Encoding.GetEncoding("iso-8859-1"));
于 2013-09-16T10:53:03.313 回答
0

您也可以在写入文件时尝试 UTF 编码,

textW.WriteLine(linesToWrite[i],Encoding.UTF8);
于 2015-07-10T13:43:49.667 回答
0

您可能需要编写单字节字符集

使用Encoding.GetEncodings()您可以轻松获得所有可能的编码。(“DOS”编码是System.Text.SBCSCodePageEncoding

在此处输入图像描述

在您的情况下,您可能需要使用

File.ReadAllLines(path, Encoding.GetEncoding("IBM850"));

new StreamWriter(filePath, Encoding.GetEncoding("IBM850"));

邦尼之旅!;)

于 2015-07-10T16:08:10.157 回答