VS下的中文显示问题-编码转换

  在VS2010下开发Cocos2dx项目,首先遇到的第一个问题是中文显示问题,这个前辈们已经给出了不错的答案了,这里贴一下自己项目中的代码。  

1、主要的转换代码  
  1. int GBK2UTF8(std::string & gbkStr, const char* toCode, const char* fromCode)  
  2. {  
  3. #if (CC_TARGET_PLATFORM == CC_PLATFORM_WIN32)  
  4.     iconv_t iconvH;  
  5.     iconvH = iconv_open(fromCode, toCode);  
  6.     if (iconvH == 0)  
  7.     {  
  8.         return -1;  
  9.     }  
  10.     const char* strChar = gbkStr.c_str();  
  11.     const char** pin = &strChar;  
  12.     size_t strLength = gbkStr.length();  
  13.     if (strLength <= 0)  
  14.     {  
  15.         return -1;  
  16.     }  
  17.     char* outbuf = (char*) malloc(strLength*4);  
  18.     char* pBuff = outbuf;  
  19.   
  20.     memset( outbuf, 0, strLength*4);  
  21.     size_t outLength = strLength*4;  
  22.     if (-1 == ::iconv(iconvH, pin, &strLength, &outbuf, &outLength))  
  23.     {  
  24.         iconv_close(iconvH);  
  25.         free(pBuff);  
  26.         return -1;  
  27.     }  
  28.     gbkStr = pBuff;  
  29.     free(pBuff);  
  30.     iconv_close(iconvH);  
  31. #else  
  32.   
  33. #endif  
  34.     return 0;  
  35. }  


2、GBK转UTF-8  
  1. std::string GBK2UTF8(const char* szMsg)  
  2. {  
  3. #if (CC_TARGET_PLATFORM == CC_PLATFORM_WIN32)  
  4.     std::string sztemp = "";  
  5.     sztemp.append(szMsg);  
  6.     GBK2UTF8(sztemp, "gb2312""utf-8");  
  7.     return sztemp;  
  8. #else  
  9.     return szMsg;  
  10. #endif  
  11. }  


3、UTF-8转GBK  
  1. std::string UTF8GBK2(const char* szMsg)  
  2. {  
  3.     if (szMsg == NULL || *szMsg == 0) return szMsg;  
  4. #if (CC_TARGET_PLATFORM == CC_PLATFORM_WIN32)  
  5.     std::string sztemp = "";  
  6.     sztemp.append(szMsg);  
  7.     GBK2UTF8(sztemp, "utf-8""gb2312");  
  8.     return sztemp;  
  9. #else  
  10.     return szMsg;  
  11. #endif  
  12. }  


由于在Mac OS X系统下不需要做这样的转换,因此这里加上了对WIN_32的判定。这样方法便可兼容Windows和Mac OS X系统了。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值