怎么才能把字符串转换成utf8码? 急哦!!!!!!!!!!!!!!!!!!

解决方案 »

  1.   

    MultiByteToWideChar (CP_ACP, ...);  // ANSI字符串转化成Unicode字符串
    WideCharToMultiByte (CP_UTF8, ...); // Unicode字符串转化成Utf8字符串
      

  2.   

    难道我们在屏幕上输出的文字就是ANSI码吗?也就是说我们需要进行2次变换?
      

  3.   

    这里面包含了两个方向的转换,你看一下吧
    #include    "Windows.h"  
    int  main(void)  
    {  
    char  str  [  256  ]  =  "唐志国"  ;    //一段UTF-8编码  
    WCHAR*  strA;  
    int  i=  MultiByteToWideChar  ( CP_ACP   ,  0  ,(char*)  str  ,-1  ,NULL,0);  
    strA  =  new  WCHAR[i];  
    MultiByteToWideChar  (  CP_ACP  ,  0  ,(  char  *  )  str,  -1,  strA  ,  i);  

    i=  WideCharToMultiByte(CP_UTF8,0,strA,-1,NULL,0,NULL,NULL);  
    char  *strB=new  char[i];  
    WideCharToMultiByte  (CP_UTF8,0,strA,-1,strB,i,NULL,NULL);  
    //strB即为所求   delete  []strA;  

    i=  MultiByteToWideChar  ( CP_UTF8   ,  0  ,(char*)  strB  ,-1  ,NULL,0);  
    strA  =  new  WCHAR[i];  
    MultiByteToWideChar  (  CP_UTF8  ,  0  ,(  char  *  )  strB,  -1,  strA  ,  i);   delete  []strB;  

    i=  WideCharToMultiByte(CP_ACP,0,strA,-1,NULL,0,NULL,NULL);  
    strB=new  char[i];  
    WideCharToMultiByte  (CP_ACP,0,strA,-1,strB,i,NULL,NULL);  
    //strB即为所求  
    delete  []strA;  

    delete  []strB;  
    return  0;  
    }  
      

  4.   

    windows下面的unicode使用的就是utf16
      

  5.   

    bluebohe(薄荷) (MVP):
    在你的代码中, //strB即为所求  之前 是把utf8转换成为什么每次都要有2部转换呀?
      

  6.   

    在 //strB即为所求 之后是不是就是吧 字符串转换成utf8先把 字符串转换成unicode码 用MultiByteToWideChar 为什么里面的参数是CP_UTF8   
    xstring(麻雀)  不是说应该是CP_ACP??
      

  7.   

    xstring(麻雀)那段代码难道是 先把字符串 转换成 utf8 (在//strB即为所求 之前)然后再转换回来 是吗?
      

  8.   

    xstring(麻雀) 谢谢啦  让我先试试