我就VC++ 6.0设置为unicode编程,接收来自javascript的参数。
然后我需要用VC编写客服端,发送数据到服务器端(不是我编写,且无法改动代码),服务器端要求需要接收ASCII。
问:我要怎样才能把我的数据转为ASCII编码,发送到服务端。我javascirpt接收到的参数放置到了,VC的CString里面

解决方案 »

  1.   

    那你知道不知道你的unicode是那种语言?
      

  2.   

    不知道
    http://community.csdn.net/Expert/topic/4512/4512699.xml?temp=.0688898
    知道
    用这个函数
    WideCharToMultiByte
    http://blog.csdn.net/thisisll/archive/2005/09/01/469422.aspx
      

  3.   

    int WideCharToMultiByte(
      UINT CodePage,            // code page
      DWORD dwFlags,            // performance and mapping flags
      LPCWSTR lpWideCharStr,    // wide-character string
      int cchWideChar,          // number of chars in string.
      LPSTR lpMultiByteStr,     // buffer for new string
      int cbMultiByte,          // size of buffer
      LPCSTR lpDefaultChar,     // default for unmappable chars
      LPBOOL lpUsedDefaultChar  // set when default char used
    );
      

  4.   

    谢谢各位的帮助,但是还是存在问题。
    当unicode编码为129~256时,用这个函数转换出来的全部是“?”显示因为涉及到bit的处理,这部分代码必须和
    unicode的保持一致。(去掉高位的00,保留低位(十六进制))我是这样调用函数的:
    WideCharToMultiByte(CP_ACP,NULL,m_dataBuf,m_dataBuf.GetLength(),(char *)tembuf,10240,NULL,NULL);
      

  5.   

    129~256这个范围的codepage下1252
     len = WideCharToMultiByte(codepage,0,pUCS,-1,NULL,0,NULL,NULL);
     WideCharToMultiByte(codepage,0,pUCS,-1,p,len,NULL,NULL);
    最好这么调用
      

  6.   

    Identifier Meaning 
    874 Thai 
    932 Japanese 
    936 Chinese (PRC, Singapore) 
    949 Korean 
    950 Chinese (Taiwan; Hong Kong SAR, PRC)  
    1200 Unicode (BMP of ISO 10646) 
    1250 Windows 3.1 Eastern European  
    1251 Windows 3.1 Cyrillic 
    1252 Windows 3.1 Latin 1 (US, Western Europe) 
    1253 Windows 3.1 Greek 
    1254 Windows 3.1 Turkish 
    1255 Hebrew 
    1256 Arabic 
    1257 Baltic 
      

  7.   

    谢谢你的帮忙,但是如果我用
    WideCharToMultiByte(1252,0,m_dataBuf,-1,(char *)tembuf,1024,NULL,NULL);
    汉字的转换有出现“?”
    能否让它同时支持两种转换,或者是可以保留无法转换的字符