【问题标题】:How does Windows Notepad interpret characters?Windows 记事本如何解释字符?
【发布时间】:2011-10-09 19:18:14
【问题描述】:

我想知道 Windows 是如何解释字符的。

我用十六进制编辑器制作了一个文件,其中包含 3 个字节 E3 81 81
这些字节是 UTF-8 中的 字符。

我打开记事本,它显示。我没有指定文件的编码,我只是创建了字节并且记事本正确解释了它。

记事本是否以某种方式猜测编码?
还是十六进制编辑器使用特定编码保存这些字节?

【问题讨论】:

    标签: windows encoding utf-8 notepad hex-editors


    【解决方案1】:

    如果文件只包含这三个字节,则根本没有关于使用哪种编码的信息。

    一个字节只是一个字节,没有办法在其中包含任何编码信息。此外,十六进制编辑器甚至不知道您打算将数据解码为文本。

    记事本通常使用 ANSI 编码,因此如果它以 UTF-8 格式读取文件,则必须根据文件中的数据猜测编码。

    如果您将文件保存为 UTF-8,记事本会将 BOM(字节顺序标记)EF BB BF 放在文件开头。

    【讨论】:

    • 是的,但我没有将文件保存为 UTF-8 或其他格式,我创建了字节。谢谢
    • @Guffa,这个答案是错误的,伙计。他使用 HxD 创建了该文件。该文件只有 3 个字节,没有 BOM。然而记事本没有用 ascii 文本打开它,它是用 UTF8 文本打开的?记事本是怎么知道的?
    【解决方案2】:

    记事本做出有根据的猜测。我不知道细节,但加载前几千字节并尝试从 UTF-8 转换它们非常简单,所以它可能会做类似的事情。

    【讨论】:

      【解决方案3】:

      【讨论】:

        【解决方案4】:

        有一种简单有效的方法可以检查文件是否为 UTF-8。参见维基百科:http://en.wikipedia.org/w/index.php?title=UTF-8&oldid=581360767#Advantages,第四个要点。记事本可能会使用这个。

        Wikipedia 声称 Notepad 使用了 IsTextUnicode 函数,该函数检查特定文本是否以 UTF-16 编写(它可能在 Windows Vista 中停止使用它,修复了“布什隐藏事实”错误):http://en.wikipedia.org/wiki/Bush_hid_the_facts .

        【讨论】:

        • 布什在这里隐藏了事实似乎对我不起作用...赢得 8.1。然而提问者的代码有效。
        【解决方案5】:

        如何识别文件是采用哪种编码方式......?

        转到文件并尝试另存为...,您可以看到文件的默认(当前)编码(保存时使用的编码)。

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2016-08-29
          • 2021-05-24
          • 1970-01-01
          • 2019-10-27
          相关资源
          最近更新 更多