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。当我以相同的方式创建一个没有法语字符的文件时,textpad 和 notepad++ 都将文件作为 ansi 文件读取,即使根据 msdn 它应该仍然是一个 utf 8 文件。

应该信任哪个程序。Notepad++ 或 textpad - Notepad++ 似乎更一致,但仍然与 MSDN 所说的相反。我的问题是我们创建的文件会被发送到另一家公司,并且取决于是否有法语字符,编码似乎会不断变化。

或者有没有更好的方法来确定文件的编码。我已经阅读了有关字节顺序标记和序言的信息,但据我所知,两者都不能保证存在。

我们最初认为我们正在构建的所有文件都是 ansi。另请注意,ansi 和 utf8 都应该适当地处理法语字符,因为这些字符是两个字符集的一部分。

4

1 回答 1

0

据我所知,“ansi”字符编码是 ascii-us 的另一个名称。

如果文件中没有不在 ascii 字符集中的字符,则该文件是有效的 ascii 和有效的 utf8,则无法区分它们。因此您的程序可以将其编写为 utf8,并且任何其他程序将其视为 ascii (ansi) 都是正确的,就像将其视为 utf8 一样。

于 2009-12-13T21:27:09.213 回答