有时候,根据程序的需要,可能会添加中文字体,但是程序在编码的时候可以能会出现乱码,那么这么处理呢,看如下代码:
#include <stdio.h> #include <stdlib.h> #include <string.h> #ifdef WIN32 #define UTEXT(str) GBKToUTF8(str) #else #define UTEXT(str) str #endif #ifdef WIN32 #include "platform/third_party/win32/iconv/iconv.h" static char g_GBKConvUTF8Buf[5000] = {0}; const char* GBKToUTF8(const char *strChar) { iconv_t iconvH; iconvH = iconv_open("utf-8","gb2312"); if (iconvH == 0) { return NULL; } size_t strLength = strlen(strChar); size_t outLength = strLength<<2; size_t copyLength = outLength; memset(g_GBKConvUTF8Buf,5000); char* outbuf = (char*) malloc(outLength); char* pBuff = outbuf; memset( outbuf,outLength); if (-1 == iconv(iconvH,&strChar,&strLength,&outbuf,&outLength)) { iconv_close(iconvH); return NULL; } memcpy(g_GBKConvUTF8Buf,pBuff,copyLength); free(pBuff); iconv_close(iconvH); return g_GBKConvUTF8Buf; } #endif
上面是汉字转换,有可能出先连接出问题的情况,那是程序所用到的iconv的lib没用添加进去,你只需要在你的工程--属性--连接--输入--添加依赖项--libiconv.lib(添加这个lib文件就可以了)