以下是一个简单的C++代码示例,用于区分文件是UTF16LE还是UTF16BE编码:

#include <iostream>
#include <fstream>
#include <cstring>

bool isUTF16LE(const char* filename) {
    std::ifstream file(filename, std::ios::binary);
    if (!file.is_open()) {
        std::cout << "无法打开文件!" << std::endl;
        return false;
    }

    char bom[2];
    file.read(bom, 2);
    file.close();

    return (bom[0] == '\xFF' && bom[1] == '\xFE');
}

bool isUTF16BE(const char* filename) {
    std::ifstream file(filename, std::ios::binary);
    if (!file.is_open()) {
        std::cout << "无法打开文件!" << std::endl;
        return false;
    }

    char bom[2];
    file.read(bom, 2);
    file.close();

    return (bom[0] == '\xFE' && bom[1] == '\xFF');
}

int main() {
    const char* filename = "test.txt";
    if (isUTF16LE(filename)) {
        std::cout << "文件 " << filename << " 是 UTF16LE 编码。" << std::endl;
    } else if (isUTF16BE(filename)) {
        std::cout << "文件 " << filename << " 是 UTF16BE 编码。" << std::endl;
    } else {
        std::cout << "文件 " << filename << " 的编码未知。" << std::endl;
    }

    return 0;
}

请注意,上述代码假设文件中包含BOM(字节顺序标记)。如果文件没有BOM,则无法准确确定其编码方式

帮我写个c++代码区分文件是UTF16LE还是UTF16BE编码

原文地址: http://www.cveoy.top/t/topic/isvT 著作权归作者所有。请勿转载和采集!

免费AI点我,无需注册和登录