我想知道windows如何解释字符,例如:
我使用带有3个字节E3 81 81
的Hexeditor创建了一个文件。
这些字节是编码为UTF-8的"ぁ"
字符。
我打开记事本,显示"ぁ"
我没有指定文件的编码,我只是创建了字节。 并且记事本正确地解释了它。
记事本是否猜测编码可能是什么? 或是十六进制编辑器使用特定编码保存这些字节。
答案 0 :(得分:4)
如果文件只包含这三个字节,则根本没有关于使用哪种编码的信息。
字节只是一个字节,并且无法在其中包含任何编码信息。此外,十六进制编辑器甚至不知道您打算将数据解码为文本。
记事本通常使用ANSI编码,因此如果它将文件读取为UTF-8,则必须根据文件中的数据猜测编码。
如果您将文件保存为UTF-8,记事本会将BOM(字节顺序标记)EF BB BF
放在文件的开头。
答案 1 :(得分:3)
记事本做出了有根据的猜测。我不知道细节,但加载前几千字节并尝试将它们从UTF-8转换起来非常简单,所以它可能会做类似的事情。
答案 2 :(得分:2)
......有时它会弄错... https://ychittaranjan.wordpress.com/2006/06/20/buggy-notepad/
答案 3 :(得分:2)
有一种简单有效的方法可以检查文件是否为UTF-8。参见维基百科:http://en.wikipedia.org/w/index.php?title=UTF-8&oldid=581360767#Advantages,第四个要点。记事本可能会使用它。
维基百科声称Notepad使用了IsTextUnicode函数,该函数检查是否用UTF-16写入了心室文本(它可能已经停止在Windows Vista中使用它,修复了“布什隐藏事实”的错误):{{3 }}。
答案 4 :(得分:0)
如何识别文件是以哪种编码方式....?
转到该文件并尝试(保存AS),您可以默认查看文件的编码。(保存编码格式)