繁体   English   中英

写回文件时出现不规则的字符/文本编码问题

[英]Irregular character/text encoding issue with writing back to file

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

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

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

有没有办法在我的应用程序中包含正确的编码才能处理这些字符? 或者,如果没有,请发出警告,说它无法正确写入给定的线路?

像这样添加encondig:

File.ReadAllLines(path, Encoding.UTF8);

new StreamWriter(filePath, Encoding.UTF8);

希望能帮助到你。

使用这个,对我有用

string txt = System.IO.File.ReadAllText(inpPath, Encoding.GetEncoding("iso-8859-1"));

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

textW.WriteLine(linesToWrite[i],Encoding.UTF8);

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

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

在此输入图像描述

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

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

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

Bonnejournée! ;)

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM