任何人都可以告诉我如何在我的程序(Alaska Xbase++)中使用 windows api,我可以检查 TXT 文件是 UTF(8、16 等)还是 ANSI? 谢谢
我在网上搜索了一无所获。
除非文件有明确的字节顺序标记(BOM),否则无法知道任何给定的字节序列采用什么编码(并且 BOM 仅适用于 UTF,不适用于“ANSI”)。那时你能做的最好的事情就是猜测,通过对输入运行一些试探法。
据我所知,系统中只有两个API可以帮助您完成猜测部分:
IsTextUnicode
:一个简单的二进制分类器,产生“看起来像 Unicode” 和“看起来不像 Unicode” 结果(其中 “Unicode” 表示 “UTF-16”)。IMultiLanguage2::DetectCodepageInIStream
:更精细的猜测器,能够分类更多的代码页,多个代码页,以及相应的置信度。按照惯例,Raymond Chen 在他的博客文章中介绍了这个问题进一步尝试猜测文件的编码。