怎样把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的数据,然后我在程序中是这样调用这个函数的,不知道写的对吗?

解决方案 »

  1.   

    bool UTF8ToGB(TCHAR* szOut ,TCHAR* str)
    试试
      

  2.   

    UTF8转成Unicode,MultiByteToWideChar(CP_UTF8, ...);然后将Unicode再转成多字节WideCharToMultiByte(CP_ACP,...);
      

  3.   

    bool UTF8ToGB(TCHAR* &szOut ,TCHAR* str)-->
    BOOL UTF8ToGB(char* szOut ,char* str)
      

  4.   

    就是这个方法,不过要保证系统是中文简体的locale. 英文系统就不行了
      

  5.   

    兔子说你不要用TChar,要直接用char, wchar, 用TChar 是不对的!你怎么知道TChar究竟是wchar还是char? 这个完全取决于项目的设置。
      

  6.   

    UTF-8转UNICODE,有固定的算法;
    UNICODE转GBK,WideCharToMultiByte()
      

  7.   

    看我BLOG上!!http://blog.csdn.net/leitianjun/archive/2010/05/18/5605410.aspx
      

  8.   


    引用的指针?指针的引用?only指针?  only 引用?算了,Mark此贴
      

  9.   

    VisualEleven说得很详细了,LZ不懂自己先网上查查资料
      

  10.   

    另外,字符串传进去转换就行了,不能一个一个的char进去转换。不知道你那个Data[i]是char还是char*