0

こんにちは、私はそのようなファイルを作成しています。

FileStream temp = File.Create( this.FileName );

次に、そのようにファイルにデータを入れます。

this.Writer = new StreamWriter( this.Stream );
this.Writer.WriteLine( strMessage );

そのコードはクラス階層にカプセル化されていますが、それが本質です。

私の問題はこれです。MSDN によると、この方法でファイルを作成するためのデフォルトのエンコーディングは UTF8 です。また、é Textpad などのフランス語の文字を書くと、ファイルが UTF 8 ファイルとして解釈されますが、notepad ++ では「ANSI as UTF8」と表示されるか、ansi ファイルですが、UTF8 として読み取られます。フランス語の文字を使用せずに同じ方法でファイルを作成すると、テキストパッドとメモ帳 ++ の両方がファイルを ansi ファイルとして読み取りますが、msdn によれば、まだ utf 8 ファイルである必要があります。

どのプログラムを信頼すべきか。Notepad++ または textpad - Notepad++ はより一貫しているように見えますが、MSDN が言うべきこととは正反対です。私の問題は、別の会社に送信されるファイルを作成し、フランス語の文字があるかどうかに応じて、エンコードが変化し続けるように見えることです。

または、ファイルのエンコーディングを判断するためのより良い方法はありますか。バイトオーダーマークとプリアンブルについて読んだことがありますが、私が理解している限り、どちらもそこにあることが保証されているわけではありません。

最初は、構築しているすべてのファイルが ansi であると考えていました。また、文字は両方の文字セットの一部であるため、ansi と utf8 の両方がフランス語の文字を適切に処理する必要があることに注意してください。

4

1 に答える 1

0

私の知る限り、「ansi」文字エンコーディングは ascii-us の別名です。

ascii charset にない文字がファイルに含まれていない場合、ファイルは有効な ascii および有効な utf8 であり、それらを区別する方法はありません。したがって、プログラムはそれを utf8 として書き込むことができ、他のプログラムはそれを utf8 と見なすのと同じように ascii (ansi) と見なすのが正しいでしょう。

于 2009-12-13T21:27:09.213 に答える