C++ 代码识别无 BOM UTF16 编码文件
#include "iostream" #include "fstream" int main() { std::ifstream file("example.txt", std::ios::binary); if (!file) { std::cout << "无法打开文件" << std::endl; return 1; } char buffer[2]; file.read(buffer, 2); if (buffer[0] == -1 && buffer[1] == -2) { std::cout << "文件编码为UTF16LE(无BOM)" << std::endl; } else if (buffer[0] == -2 && buffer[1] == -1) { std::cout << "文件编码为UTF16BE(无BOM)" << std::endl; } else { std::cout << "文件编码无法确定" << std::endl; } file.close(); return 0; } 请替换example.txt为你要检查的文件路径。该程序将读取文件的前两个字节,并根据这两个字节的值判断文件的编码类型。如果前两个字节是-1和-2,则表示文件使用UTF16LE(无BOM)编码;如果前两个字节是-2和-1,则表示文件使用UTF16BE(无BOM)编码;否则,无法确定文件的编码类型。 请注意,这个方法只能判断文件是否使用了UTF16LE或UTF16BE编码,并且假设文件没有BOM(字节顺序标记)。如果文件有BOM,那么可以直接根据BOM判断文件的编码类型。
原文地址: https://www.cveoy.top/t/topic/p96z 著作权归作者所有。请勿转载和采集!