gpt4 book ai didi

C++如何检查文件字节顺序标记以获得它是否为UTF-8?

转载 作者:塔克拉玛干 更新时间:2023-11-02 23:04:23 26 4
gpt4 key购买 nike

我想知道如何在 C++ 中检查文件字节顺序标记,以确定它是否为 UTF-8?

最佳答案

一般来说,你不能。

字节顺序标记的存在强烈表明您正在阅读的文件是 Unicode。如果您需要一个文本文件,并且您收到的前四个字节是:

0x00, 0x00, 0xfe, 0xff -- The file is almost certainly UTF-32BE
0xff, 0xfe, 0x00, 0x00 -- The file is almost certainly UTF-32LE
0xfe, 0xff, XX, XX -- The file is almost certainly UTF-16BE
0xff, 0xfe, XX, XX (but not 00, 00) -- The file is almost certainly UTF-16LE
0xef, 0xbb, 0xbf, XX -- The file is almost certainly UTF-8 With a BOM

但是其他的呢?如果您获得的字节不是这五种模式中的一种,那么您不能确定您的文件是或不是 UTF-8。

事实上,任何仅包含从 0x00 到 0x7f 的 ASCII 字符的文本文档都是有效的 UTF-8 文档,同时也是纯 ASCII 文档。

有一些启发式方法可以尝试根据看到的特定字符来推断文档是否以 ISO-8859-1、UTF-8 或 CP1252 编码,但一般来说,第一个文件的两个、三个或四个字节不足以说明您正在查看的内容是否肯定是 UTF-8。

关于C++如何检查文件字节顺序标记以获得它是否为UTF-8?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9103294/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com