嗨,我正在创建一个这样的文件。
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 都应该适当地处理法语字符,因为这些字符是两个字符集的一部分。