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

この Web ページではクエスチョン マークとして表示されていますが、テキスト ファイルでは長方形の白いボックスになっています。

これらの文字を処理できるように、アプリケーションに正しいエンコーディングを含める方法はありますか? または、そうでない場合は、指定された行を適切に書き込むことができなかったという警告をスローしますか?

4

4 に答える 4

2

次のように encondig を追加します。

File.ReadAllLines(path, Encoding.UTF8);

new StreamWriter(filePath, Encoding.UTF8);

それが役に立てば幸い。

于 2012-11-28T23:25:49.900 に答える
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 に答える