mb_convert_encoding ("你好", "HTML-ENTITIES", "gb2312"); //输出:你好
mb_convert_encoding ("你好", "gb2312", "HTML-ENTITIES"); //输出:你好
上面是php函数,在c/c++中怎么实现这样编码?
20320和22909分别是“你”“好”这2个字的unicode码值。
所以这么做即可:
C/C++ code:
char* ConvertGBKToEncodeStr( const char* strGBK )
{
int len=MultiByteToWideChar(936, 0, strGBK, -1, NULL,0);
int i;
WCHAR * wszUCD = new WCHAR[len+1];
memset(wszUtf8, 0, len * 2 + 2);
MultiByteToWideChar(936, 0, strGBK, -1, wszUCD, len);
char *strEncode = new char[len*8+1];
for (i=0;i<wcslen(wszUCD); i++)
{
sprintf(strEncode+strlen(strEncode), "&#%d;", wczUCD[i]);
}
delete[] wszUCD;
return strEncode;
这个是把"你好" 转为你好
反向更简单,直接提取&#和;之间的数字,赋给wchar_t数组即可。
用iconv
php函数的源码,都是纯C的,可以参考
#include <iomanip>
#include <iostream>
#include <string.h>
#include <iconv.h>
#include <locale.h>
#include <stdlib.h>
//#include <easycics>
#define HG_LA
内容涉及:C、C++、STL、VC++、MFC、COM、ATL、Windows网络编程、数据库编程、Windows驱动编程、软件工程、Windows操作系统编程,等等方面。
下载地址:http://www.cctry.com/forumdisplay.php?fid=46
......