文件:Buffer.cpp
功能:判断文件的换行符格式
函数:static EolType getEOLFormatForm(const char* const data, size_t length, EolType defvalue = EolType::osdefault)
{
循环字符
{
如果字符是cr
如果下一个字符是lf
是win格式
否则
是macos格式
如果是字符是lf
是unix格式
}
是未知格式
}
函数:bool FileManager::loadFileData
{
判断文件的BOM情况
无BOM情况下使用uchardet库判断字符编码
}
功能:判断文件的编码格式
函数:int FileManager::detectCodepage(char* buf, size_t len)
{
int codepage = -1;
uchardet_t ud = uchardet_new();
uchardet_handle_data(ud, buf, len);
uchardet_data_end(ud);
const char* cs = uchardet_get_charset(ud);
if (stricmp(cs, "TIS-620") != 0) // TIS-620 detection is disabled here because uchardet detects usually wrongly UTF-8 as TIS-620
codepage = EncodingMapper::getInstance().getEncodingFromString(cs);
uchardet_delete(ud);
return codepage;
}
文件:Utf8_16.cpp
功能:判断文件的BOM情况
函数:UniMode Utf8_16_Read::determineEncoding(const unsigned char *buf, size_t bufLen)
{
判断UTF-16 big-endian with BOM
判断UTF-16 little-endian with BOM
判断UTF-8 with BOM
不是带BOM文件格式
}