簡體   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