这是一个系列的文章,详情可点击关于这两年所经历项目的系列总结
在VS2010下开发Cocos2dx项目,首先遇到的第一个问题是中文显示问题,这个前辈们已经给出了不错的答案了,这里贴一下自己项目中的代码。
1、主要的转换代码
int GBK2UTF8(std::string & gbkStr, const char* toCode, const char* fromCode)
{
#if (CC_TARGET_PLATFORM == CC_PLATFORM_WIN32)
iconv_t iconvH;
iconvH = iconv_open(fromCode, toCode);
if (iconvH == 0)
{
return -1;
}
const char* strChar = gbkStr.c_str();
const char** pin = &strChar;
size_t strLength = gbkStr.length();
if (strLength <= 0)
{
return -1;
}
char* outbuf = (char*) malloc(strLength*4);
char* pBuff = outbuf;
memset( outbuf, 0, strLength*4);
size_t outLength = strLength*4;
if (-1 == ::iconv(iconvH, pin, &strLength, &outbuf, &outLength))
{
iconv_close(iconvH);
free(pBuff);
return -1;
}
gbkStr = pBuff;
free(pBuff);
iconv_close(iconvH);
#else
#endif
return 0;
}
2、GBK转UTF-8
std::string GBK2UTF8(const char* szMsg)
{
#if (CC_TARGET_PLATFORM == CC_PLATFORM_WIN32)
std::string sztemp = "";
sztemp.append(szMsg);
GBK2UTF8(sztemp, "gb2312", "utf-8");
return sztemp;
#else
return szMsg;
#endif
}
3、UTF-8转GBK
std::string UTF8GBK2(const char* szMsg)
{
if (szMsg == NULL || *szMsg == 0) return szMsg;
#if (CC_TARGET_PLATFORM == CC_PLATFORM_WIN32)
std::string sztemp = "";
sztemp.append(szMsg);
GBK2UTF8(sztemp, "utf-8", "gb2312");
return sztemp;
#else
return szMsg;
#endif
}
由于在Mac OS X系统下不需要做这样的转换,因此这里加上了对WIN_32的判定。这样方法便可兼容Windows和Mac OS X系统了。
分享到:
相关推荐
显示汉字页面编码及URL编码格式,在GBK和UTF-8之间进行转换,提供源码供参考。
ROS软路由中不能直接使用中文,本工具可以将中文转换成RouterOS可识别的编码 本人将源码开放出来,供大家学习参考
excel 公式 自动转换unicode编码为汉字
3、GB2312 计算机传入中国,同样的问题,10万多个汉字一个字节256位远远不够,于是中国科 学家自力更生,重写了一张编码表,就是GB2312,它用2个字节16个比特位(65536位) 表示常用汉字,后来,为了显示更多汉字,...
Qt字符转换,串口接收数据转为中文显示可用。Qt中的字符编码转换:UTF8、Unicode、GBK、ASCII、16进制字符、16进制数值
解决Source Insight 等中文乱码问题:在Linux下执行此脚本,可以将 utf-8 或 gkb 等编码文件(可任意添加) 转换为 gb18003(可任意修改为其他) 编码文件。 特点:此脚本会递归地转换所在目录及子目录下的所有 .c...
4.有示例显示,无需对编码非常了解,也能轻易使用. 5.软件有32位和64位多个版本,满足不同用户需求 6.本软件使用java编写,电脑中如果没有jre环境,可以下载带jre版本的软件. 7.软件无需网络,直接在本机运行即可完成...
介绍看博客吧 http://blog.csdn.net/usister/article/details/6768062
kivy 中文显示,汉字编码转换及字体文件
汉字转unicode编码(unicode编码如\u5546),在编码为iso-8839-1的文件中显示汉字必须转为unicode编码才行。 3.文件编码的自动设别方法与测试示例(自动列出编码、最可能的编码、有多种编码可能的情况下打印用各种...
当需要将文本文件导入SAS中时,UTF-8编码的中文有可能会乱码,此文讨论了一种解决方法
选择文件夹,将指定文件里面的所有特定后缀的UTF-8编码文件转成GB2312文件,使用VS2013 ,MFC 开发.
VFP的GB转换UTF8代码,n年以前写的了,仅供参考
Delphi演示如何实现UniCode编码、汉字的繁简互转功能,同时将字符转换为unicode码值(十六进制): ... 本例子中仅使用了936、950,如果你要进行其他语言的编码转换,仅需相应改变其中的编码值即可。
目前有多种方法解决该中文显示乱码问题,但通过iconv命令转换是最为方便快捷的方法,无法安装任何额外插件。可惜网上没找到现成的可以转换指定目录下所有文件编码格式的脚本,只好自己写了一个,实现如下功能: 1. ...
下载到的代码中文显示乱码怎么办?多半可能是字符编码不对。 该工具用于字符编码GB2312转UTF8,可批量转换。只需将该工具放置与需要转换文件的目录下,双击运行即可。 注意:需安装Python,Python 2和3 需安装通用...
从Delphi7开始,窗体文件dfm里的汉字都变成了#...因此,做了一个转换器,可以将Unicode数字表示的汉字#28162#31992转换为正确显示的汉字。 1.1版的改进,可以反向转换,即将含汉字的文件转换为#28382#33288之类的格式。
txt乱码转换器可以查看并修正乱码文档,修复txt乱码为正常显示的文字,可以查看 MIME/BASE64、Quoted-Printable、HZ、UUCode、混合编码等算法加密、转换过的文字信息,编码或者解码MIME/UUE/Q_P/HZ,一般选择自动就...
注意,GBK的模板转换为utf-8的时候,一些标点是无法转换的,而这些GBK编码的标点在老外的电脑上是无法显示的。所以有些文件里面需要批量替换一些不能转换的东西。同样,中文网站使用的uft-8模板不是纯utf-8,想翻译...
问题也是有的,在此环境下涉及到数据库运行的文件都必须是 utf8编码.这样一来就出现了不兼容,因为在国内大家都是以GBK gb2312编的码 包括 17PHP.com 网站里的学习源码文件(我用的是77例中的) 和很多插件 论坛代码......