ANSI和Unicode互转

VC++ ANSI和Unicode互转,以及MultiByteToWideChar和WideCharToMultiByte用法!
将ANSI转换到Unicode   
  (1)通过L这个宏来实现,例如:   CLSIDFromProgID(   L"MAPI.Folder",&clsid);   
  (2)通过MultiByteToWideChar函数实现转换,例如:   
  char   *szProgID   =   "MAPI.Folder";   
  WCHAR   szWideProgID[128];   
  CLSID   clsid;   
  long   lLen   =   MultiByteToWideChar(CP_ACP,0,szProgID,strlen(szProgID),szWideProgID,sizeof(szWideProgID));   
  szWideProgID[lLen]   =   '/0';     
  (3)通过A2W宏来实现,例如:     
  USES_CONVERSION;     
  CLSIDFromProgID(   A2W(szProgID),&clsid);     
    
  将Unicode转换到ANSI   
  (1)使用WideCharToMultiByte,例如:   
  //   假设已经有了一个Unicode   串   wszSomeString...     
  char   szANSIString   [MAX_PATH];     
  WideCharToMultiByte   (   CP_ACP,   WC_COMPOSITECHECK,   wszSomeString,   -1,   szANSIString,   sizeof(szANSIString),   NULL,   NULL   );     
  (2)使用W2A宏来实现,例如:   
  USES_CONVERSION;   
  pTemp=W2A(wszSomeString);

以上为网上找到的方法,经过实践证明, MultiByteToWideChar函数的使用比较个性正确的用法应该如下:
             int iLen = WideCharToMultiByte(CP_ACP, 0, wFileName, -1, NULL, 0, NULL, NULL);
             WideCharToMultiByte(CP_ACP, 0, wFileName, -1, cFileName, iLen, NULL, NULL);
             uchNameLength = iLen;
wFileName为宽字符数组,包含实际的字符。
cFileName 存放转换后的字符。

由上可以看出,需要先获取 wFileName 数组中实际存放的字符数。然后进行转换,并将转换后的字符长度存储于 uchNameLength变量中。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值