使用法语字符和编码创建文件

时间:2009-12-11 17:45:47

标签: encoding utf-8 character-encoding ansi

嗨,我正在创建一个这样的文件。

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

然后将数据放入文件中。

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

该代码封装在类层次结构中,但这是它的佼佼者。

我的问题是这个。 MSDN表示以这种方式创建文件的默认编码是UTF8。当我写一个法语字符如éTextpad将该文件解释为UTF 8文件时,但记事本++说它是“ANSI as UTF8”或者它可能是一个ansi文件但是将其读作UTF8。当我以相同的方式创建文件而没有法语字符时,textpad和notepad ++都将文件读作ansi文件,即使根据msdn它仍然应该是一个utf 8文件。

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

或者有更好的方法来确定文件的编码。我读过有关字节顺序标记和前导码的信息,但据我所知,两者都不能保证在那里。

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

1 个答案:

答案 0 :(得分:0)

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

如果文件中没有字符不在ascii字符集中,那么该文件有效ascii且有效utf8,则无法区分它们。所以你的程序可以把它写成utf8,任何其他程序都可以正确看到ascii(ansi),就像它将它视为utf8一样。