C++判断文件编码格式

ANSI:        无格式定义;
Unicode:       前两个字节为FFFE;
Unicode big endian: 前两字节为FEFF; 
UTF-8:        前两字节为EFBB;

#include <fstream>
using namespace std;
 
int main()
{
    ifstream fin("C:/Users/Administrator/Desktop/w/1.cpp",ios::binary);
    unsigned char  s2;
    fin.read((char*)&s2, sizeof(s2));//读取第一个字节,然后左移8位
    int p = s2<<8;
    fin.read((char*)&s2, sizeof(s2));//读取第二个字节
    p |=s2;
 
    string code;
 
    switch(p)//判断文本前两个字节
    {
    case 0xfffe:  //65534
        code = "Unicode";    
        break;
    case 0xfeff://65279
        code = "Unicode big endian";
        break;
    case 0xefbb://61371
        code = "UTF-8";     
        break;
 default: 
        code = "ANSI"; 
     }
     fin.close(); 
     return 0;
}
  • 3
    点赞
  • 12
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
`GetPrivateProfileSectionNames`函数是用于获取配置文件中所有的section名字的函数。它并不提供直接的方法来判断文件编码。 通常情况下,INI文件编码是由文件本身的字节序列决定的。常见的编码包括ASCII、UTF-8、UTF-16(Little Endian或Big Endian)等。 如果你无法确定INI文件编码,可以尝试使用不同的编码方式来读取文件内容,然后观察结果是否正确。以下是一个示例代码,展示了如何使用不同的编码方式来读取INI文件: ```cpp #include <iostream> #include <fstream> std::wstring ReadFile(const std::wstring& fileName, const std::wstring& encoding) { std::wifstream file(fileName, std::ios::binary); file.imbue(std::locale(encoding)); std::wstringstream buffer; buffer << file.rdbuf(); return buffer.str(); } int main() { const std::wstring fileName = L"config.ini"; // 尝试使用不同的编码方式读取文件 std::wstring content; // 使用ASCII编码读取文件 content = ReadFile(fileName, L".ACP"); std::wcout << "Content (ACP): " << content << std::endl; // 使用UTF-8编码读取文件 content = ReadFile(fileName, L".UTF-8"); std::wcout << "Content (UTF-8): " << content << std::endl; // 使用UTF-16编码读取文件(Little Endian) content = ReadFile(fileName, L".UTF-16LE"); std::wcout << "Content (UTF-16LE): " << content << std::endl; // 使用UTF-16编码读取文件(Big Endian) content = ReadFile(fileName, L".UTF-16BE"); std::wcout << "Content (UTF-16BE): " << content << std::endl; return 0; } ``` 在上述示例中,我们定义了一个`ReadFile`函数,该函数接受文件名和编码方式作为参数,并使用指定的编码方式来读取文件内容。然后,我们使用不同的编码方式来读取INI文件,并将结果输出到控制台。 你可以尝试使用不同的编码方式来读取INI文件,并观察结果是否正确。如果结果正确,则说明所使用的编码方式是正确的。 请注意,以上示例中使用的是C++的标准库,而不是WIN32 API。但你可以参考此示例中的编码处理方法,并将其应用到WIN32 API中。 希望这个示例能够帮助你判断INI文件编码。如果有任何进一步的问题,请随时提问。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值