【问题标题】:Text file encoding scheme文本文件编码方案
【发布时间】:2016-03-29 10:04:57
【问题描述】:

应用程序(例如 vim)如何在读取给定文本文件之前知道它是哪种格式(例如 ASCII、unicode 等)?

另外,我们如何编写一个 C++ 程序来检测相同的内容?

【问题讨论】:

  • 在 2015 年,相对可以假设每个文件都是 UTF-8。 (10-15 年前不是这样)
  • 是的,但应用程序必须有某种方法才能正确判断?
  • @immibis Windows 应用程序的标准行为仍然是默认使用本地代码页(通常标记为 ANSI)。
  • @roeland 是的,在 2015 年,假设 每个 文件都是 UTF-8 仍然相对安全。即使是在 Windows 上创建的文件也很可能是 UTF-8。即使这不是 WIndows 的默认设置。

标签: c++ unicode ascii vi


【解决方案1】:

他们在阅读之前通常不知道。有时他们在读完文件后永远都不知道——大多数人只看文件的开头,并试图猜测它包含的数据的编码。

在某些情况下,这可能很容易(例如,如果它以 Unicode BOM 开头),但在其他情况下则相当困难。有一次,微软的“IsTextUnicode”对相当多的英文文本做出了错误的猜测,所以记事本(对于一个使用它的程序)会让你在文件中输入一个东西,然后当你再次打开文件时,它会显示你的东西完全不同,因为你输入的英文被解释为用 Unicode 编码的汉字。

【讨论】:

  • 那么任何程序都没有办法知道吗?
  • 谢谢! unicode 的奥秘仍在继续……我将假设它是“某事”并继续我的生活
猜你喜欢
  • 1970-01-01
  • 2010-11-20
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多