Windows记事本如何解释字符



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

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

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

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

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

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

Notepad通常使用ANSI编码,所以如果它读取文件为UTF-8,那么它必须根据文件中的数据猜测编码。

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

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

…有时它会出错……https://ychittaranjan.wordpress.com/2006/06/20/buggy-notepad/

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

维基百科声称记事本使用了IsTextUnicode函数,该函数检查课程文本是否以UTF-16编写(它可能在Windows Vista中停止使用它,这修复了"布什隐藏事实"的错误):http://en.wikipedia.org/wiki/Bush_hid_the_facts。

如何识别文件是在哪个编码....?

进入文件并尝试另存为…,您可以看到文件的默认(当前)编码(保存它的编码)。

最新更新