关于编码转换的一些问题和整理(持续更新)
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;
}
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;
}
相关文章推荐
- 关于TOSCA自动化测试工具, 我想问一些问题(持续整理中)
- 关于android初学时一些问题的解决方法资料(持续更新)
- 关于数据库的一些问题收集(持续更新)
- 关于一些平常JAVA知识及遇到问题的积累(持续更新)
- 关于项目中一些前端框架的问题汇总(持续更新)
- 关于使用BoundsCheck的一些问题汇总[持续更新]
- 关于在JSP中页面展示报错调试的一些问题归纳(持续更新中...)
- 关于Mybatis使用的一些问题汇总(持续更新)
- 关于我遇到的java中编译没错运行出错的一些问题(不定期更新)
- 关于功能自动化测试的一些想法(持续更新ing)
- Unity+NGUI使用时一些要注意的事整理(持续更新)
- 关于内存对齐问题的一些资料整理
- 关于ASP.net的一些问题的解决,不断更新中......
- 关于应用程序从AppStore上更新的一些问题处理
- 网上看到的一些脚本题目,整理了起来...持续更新・・・・
- 关于H.264的一些问题的整理
- 关于asterisk enum的一些资料(持续更新中)
- 作为前端,个人整理的一些网站链接(持续更新中)
- android中遇到的一些问题整理--不断更新中
- 一些微小但是又不得不知道的问题(持续更新)