【问题标题】:Reading files not vary by encoding [closed]读取文件不会因编码而异[关闭]
【发布时间】:2016-06-27 19:17:45
【问题描述】:

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

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

第一个问题当我强制读取像 UTF8 这样的文件时,波兰语字母不能从 ASCII 文件中正确显示,反之亦然。任何想法?如何轻松检测文件编码?此信息是否保留在 TXT 文件元数据中?

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

【问题讨论】:

  • 我怀疑你的意思不是真的 ASCII...究竟是什么意思? (ASCII 中没有重音字符,每个 ASCII 文件都可以视为 UTF-8 而不改变其含义。)
  • 听起来您正在寻找 Unicode 编码。

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


【解决方案1】:

您可能不应该强制任何编码

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

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

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多