好吧,我需要找出我在某个目录中找到的哪些文件是 UTF8 编码的,或者是 ANSI 编码的,以更改我稍后决定的其他编码。我的问题是..我如何确定文件是 UTF8 还是 ANSI 编码?这两种编码实际上都可以在我的文件中使用。
没有可靠的方法来做到这一点(因为该文件可能只是随机二进制文件),但是 Windows 记事本软件完成的过程在 Micheal S Kaplan 的博客中有详细介绍:
http://www.siao2.com/2007/04/22/2239345.aspx http://www.siao2.com/2007/04/22/2239345.aspx
- 检查前两个字节;
1.如果存在UTF-16 LE BOM,则将其视为(并加载)为“Unicode”文件;
2.如果存在UTF-16 BE BOM,则将其视为(并加载)为“Unicode (Big Endian)”文件;
3. 如果前两个字节看起来像 UTF-8 BOM 的开头,则检查下一个字节,如果我们有 UTF-8 BOM,则将其视为(并加载)为“UTF-8”文件;
- 检查 IsTextUnicode 以查看该函数是否认为它是无 BOM 的 UTF-16 LE,如果是,则将其视为(并加载)为“Unicode”文件;
- 使用 1998 年的原始 RFC 2279 定义检查它是否为 UTF-8,然后是否将其视为(并加载)为“UTF-8”文件;
- 假设 ANSI 文件使用机器的默认系统代码页。
现在请注意,有一些漏洞
在这里,就像步骤 2 所做的那样
无 BOM 效果不佳
UTF-16 BE(甚至可能存在错误
在这里,我不确定——如果是这样,那就是一个错误
在记事本中超越任何错误
IsTextUnicode)。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)