重点:
1.在线检查工具
在线文件编码识别- 在线工具 (bugscaner.com)
2.检查文章链接
C++读取文本文件 ANSI,UNICODE,UTF-8 - 猴子你是猪吗 - 博客园 (cnblogs.com)
3.检查是否是UTF8格式
bool check_utf8_bom(const std::wstring& filename)
{std::ifstream file(filename, std::ios::binary);if (!file){std::cerr << "Failed to open file: " << filename.c_str() << std::endl;return false;}// UTF-8 BOM 字节序列为 \xEF\xBB\xBFstatic constexpr char bom[] = { '\xEF', '\xBB', '\xBF' };char buffer[sizeof(bom)];file.read(buffer, sizeof(buffer));// 检查读取的前三个字节是否与UTF-8 BOM匹配return std::equal(std::begin(bom), std::end(bom), buffer);
}
3.检查ANSI = 0,Unicode= 1,UTF8,
typedef enum FileType
{ANSI = 0,Unicode= 1,UTF8,
}FILETYPE;FILETYPE GetTextFileType(const std::wstring& strFileName){FILETYPE fileType = ANSI;std::ifstream file;file.open(strFileName.c_str(), std::ios_base::in);bool bUnicodeFile = false;if (file.good()){char szFlag[3] = { 0 };file.read(szFlag, sizeof(char) * 3);if ((unsigned char)szFlag[0] == 0xFF&& (unsigned char)szFlag[1] == 0xFE){fileType = Unicode;}else if ((unsigned char)szFlag[0] == 0xEF&& (unsigned char)szFlag[1] == 0xBB&& (unsigned char)szFlag[2] == 0xBF){fileType = UTF8;}}file.close();return fileType;}