您的位置:首页 > 其它

关于编码转换的一些问题和整理(持续更新)

2017-03-18 16:06 302 查看
Unicode转GBK

std::string UnicodeTo(std::string sUnicode)
{
std::string sgbk = sUnicode;

//printf("unicode:%s\n", sgbk.c_str());

setlocale(LC_ALL, "");
int npos = sgbk.find("\\u");
while(npos != std::string::npos)
{
if(sgbk.length() - npos < 6)
break;

char sGBK[5]; memset(sGBK, 0, 5);
wchar_t ws[2]; memset(ws, 0, 2);
ws[0] = strtol(sgbk.substr(npos+2, 4).c_str(), NULL, 16);
wcstombs(sGBK, ws, 5);
//printf("<%s %s>", sgbk.substr(npos+2, 4).c_str(), sGBK);

std::string stemp = sgbk.substr(0, npos);
stemp += sGBK;
if(npos+6 < sgbk.length())
stemp += sgbk.substr(npos+6, sgbk.length()-npos-6);
sgbk = stemp;
//printf("%s\n", sgbk.c_str());

npos = sgbk.find("\\u");
}

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