怎样把utf-8转换成gb格式的编码,要c++控制台的代码,谢谢
bool UTF8ToGB(TCHAR* &szOut ,TCHAR* str)
{
WCHAR *strSrc;
TCHAR *szRes;
int i = MultiByteToWideChar(CP_UTF8, 0, str, -1, NULL, 0);
strSrc = new WCHAR[i+1];
MultiByteToWideChar(CP_UTF8, 0, str, -1, strSrc, i);
i = WideCharToMultiByte(CP_ACP, 0, strSrc, -1, NULL, 0, NULL, NULL);
szRes = new TCHAR[i+1];
WideCharToMultiByte(CP_ACP, 0, strSrc, -1, szRes, i, NULL, NULL);
szOut = szRes;
delete []strSrc;
delete []szRes;
return true;
}这是我写 的,但是没有成功,不知道什么地方出错了。 for(i=23;i<=end;i++)
{
char *temp;
UTF8ToGB(temp,&Data[i]);
// fwrite(&Data[i],sizeof(char),1,fp);
fwrite(temp,sizeof(char),1,fp); }这里面的Data[i]就是演来的utf-8的数据,然后我在程序中是这样调用这个函数的,不知道写的对吗?
bool UTF8ToGB(TCHAR* &szOut ,TCHAR* str)
{
WCHAR *strSrc;
TCHAR *szRes;
int i = MultiByteToWideChar(CP_UTF8, 0, str, -1, NULL, 0);
strSrc = new WCHAR[i+1];
MultiByteToWideChar(CP_UTF8, 0, str, -1, strSrc, i);
i = WideCharToMultiByte(CP_ACP, 0, strSrc, -1, NULL, 0, NULL, NULL);
szRes = new TCHAR[i+1];
WideCharToMultiByte(CP_ACP, 0, strSrc, -1, szRes, i, NULL, NULL);
szOut = szRes;
delete []strSrc;
delete []szRes;
return true;
}这是我写 的,但是没有成功,不知道什么地方出错了。 for(i=23;i<=end;i++)
{
char *temp;
UTF8ToGB(temp,&Data[i]);
// fwrite(&Data[i],sizeof(char),1,fp);
fwrite(temp,sizeof(char),1,fp); }这里面的Data[i]就是演来的utf-8的数据,然后我在程序中是这样调用这个函数的,不知道写的对吗?
试试
BOOL UTF8ToGB(char* szOut ,char* str)
UNICODE转GBK,WideCharToMultiByte()
引用的指针?指针的引用?only指针? only 引用?算了,Mark此贴