您的位置:首页 > 其它

Windows 文件编码

2015-07-08 14:16 281 查看
//删除UFT-8 BOM

string deleteUtf8Bom(string data)

{

string Result = "";

if (data.length > 3)

{

if ((data[0] == -17) && (data[1] == -69) && (data[2] == -65))

{

Result = data.substr(3, data.length() - 3);

}

}

else Result = data;

return Result;

}

//将宽字符写入到数组中,可用于写文件

void CopyWStringToChar(char* derv, std::wstring source, bool addUnicodBom)

{

if (addUnicodBom)

{

derv[0] = 0xFF;

derv[1] = 0xFE;

derv += 2;

}

memcpy(derv, (char*)source.c_str(), source.length()*2);

}

//将字符写入到宽字符中,可用于读文件

std::wstring CopyCharToWString(char* source, int length)

{

wstring newChar = L"";

int i = 0;

bool isBigUnicode = false;

if (length > 2)

{

if (source[0] == -2 && source[1] == -1)

{

i = 2;

isBigUnicode = true;

}

else if (source[0] == -1 && source[1] == -2)

{

i = 2;

isBigUnicode = false;

}

else

{

for (int i = 0; i < length; i++)

{

if (source[i] == 0)

{

if (i % 2 == 0) isBigUnicode = true;

break;

}

}

}

}

for ( ; i < length; i = i + 2)

{

if (isBigUnicode)

{

newChar += (wchar_t)(source[i] << 8 & 0xFF00) + (wchar_t)(source[i + 1] & 0x00FF);

}

else

{

newChar += (wchar_t)(source[i + 1] << 8 & 0xFF00) + (wchar_t)(source[i] & 0x00FF);

}

}

return newChar;

}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: