读取文件不会因编码而异

时间:2016-06-27 19:17:45

标签: c# .net encoding utf-8 character-encoding

我写的应用程序必须从TXT文件中读取行(文件存储在ZIP存档中,因此我使用c#流来解压缩它们并在内存中运行)并继续它们。

输入文件的编码类似于ASCII或UTF8(我不知道哪个是哪个)。数据包含包含波兰语或捷克语字符的字符串。文件很小(1-5kB)

第一个问题当我强制读取像UTF8这样的文件时,从ASCII文件显示抛光字母不正确,反之亦然。任何的想法?我怎样才能以简单的方式检测文件编码?此信息是否保留在TXT文件元数据中?

第二个问题:当我在NotePad ++中显示TXT文件时,我可以看到文件是如何编码的。 NotePad ++如何知道这一点?

1 个答案:

答案 0 :(得分:1)

您可能不应强制任何编码

  String text = File.ReadAllText(@"C:\MyFile.txt");

系统(以及NotePad +)将尝试使用所谓的 BOM (字节顺序标记)来检测实际编码

https://en.wikipedia.org/wiki/Byte_order_mark