CSDN首页 空间 新闻 论坛 Blog 下载 读书 网摘 搜索 .NET Java 视频 接项目 求职 在线学习 买书 程序员 通知
英特尔®游戏设计大赛100美元现金周周送 专题改版:Java Web 专题
CSDN社区
搜索 收藏 打印 关闭
CSDN社区 >  VC/MFC >  基础类

请问Unicode和编码的转换问题.100分,不成敬意.

楼主liuguangzhou(光子)2003-12-04 13:50:57 在 VC/MFC / 基础类 提问

请问Unicode的汉字和编码制的转换.还包括两种代码的转换  
  分为两部分:  
  1.我有   554A   这个码,怎么显示出"啊"字.  
  2.就是反向的问题了.  
   
  我刚刚接触到Unicode.一窍不通,请各位详细指点.多谢!多谢  
  另外我是在标准C下作的,所以所涉及到的编译条件什么的,也请指点. 问题点数:100、回复次数:9Top

1 楼topwork(日光)回复于 2003-12-04 13:57:34 得分 5

这也不算什么unicode问题:  
  char   buf[]={0x55   ,   0x4a};  
  这就可以显示出“阿”Top

2 楼arvid_gs(west)回复于 2003-12-04 13:57:59 得分 10

MultiByteTOWideChar  
  WideCharToMultiByte  
  #include   <windows.h>  
  #include   <lm.h>  
  #include   <stdio.h>  
   
  BOOL   GetFullName(   char   *UserName,   char   *Domain,   char   *dest   )  
  {  
          WCHAR   wszUserName[256];                     //   Unicode   user   name  
          WCHAR   wszDomain[256];    
          LPBYTE   ComputerName;  
   
          struct   _SERVER_INFO_100   *si100;     //   Server   structure  
          struct   _USER_INFO_2   *ui;                   //   User   structure  
   
  //   Convert   ANSI   user   name   and   domain   to   Unicode  
   
          MultiByteToWideChar(   CP_ACP,   0,   UserName,  
                  strlen(UserName)+1,   wszUserName,        
            sizeof(wszUserName)/sizeof(wszUserName[0])   );  
          MultiByteTOWideChar(   CP_ACP,   0,   Domain,  
                  strlen(Domain)+1,   wszDomain,   sizeof(wszDomain)/sizeof(wszDomain[0])   );  
   
  //   Get   the   computer   name   of   a   DC   for   the   domain.  
   
          NetGetDCName(   NULL,   wszDomain,   &ComputerName   );  
   
  //   Look   up   the   user   on   the   DC.  
   
          if(   NetUserGetInfo(   (LPWSTR)   ComputerName,  
                  (LPWSTR)   &wszUserName,   2,   (LPBYTE   *)   &ui   )   )  
          {  
                  printf(   "Error   getting   user   information.\n"   );  
                  return(   FALSE   );  
          }  
   
  //   Convert   the   Unicode   full   name   to   ANSI.  
   
          WideCharToMultiByte(   CP_ACP,   0,   ui->usri2_full_name,   -1,  
                  dest,   256,   NULL,   NULL   );  
   
          return   (TRUE);  
  }  
  Top

3 楼afantict(非洲土狼)回复于 2003-12-04 14:00:21 得分 5

什么unicode不unicode的  
  知道WideCharToMultiByte还有这个函数倒过来  
  再瞎弄弄就差不多了Top

4 楼arvid_gs(west)回复于 2003-12-04 14:08:04 得分 10

UTF-8码转换为一般的字符串:  
   
  #include   "   Windows.h   "  
   
     
   
  int   main(void)  
   
  {  
   
                    char   str   [   256   ]   =   {(   char   )0xE4,   (   char   )   0xBD,   (   char   )   0xA0,   (   char   )   0xE5   ,  
   
                                      (   char)0xA5   ,(char)0xBD,   (char)0x61,   (char)0x62   ,(char)0x63,(char)0}   ;     //一段UTF-8编码  
   
                    WCHAR*   strA;  
   
                    int   i=   MultiByteToWideChar   (   CP_UTF8   ,   0   ,(char*)   str   ,-1   ,NULL,0);  
   
                    strA   =   new   WCHAR[i];  
   
                    MultiByteToWideChar   (   CP_UTF8   ,   0   ,(   char   *   )   str,   -1,   strA   ,   i   );  
   
                    i=   WideCharToMultiByte(CP_ACP,0,strA,-1,NULL,0,NULL,NULL);  
   
                    char   *strB=new   char[i];  
   
                    WideCharToMultiByte   (CP_ACP,0,strA,-1,strB,i,NULL,NULL);  
   
  //strB即为所求  
   
                    delete   []strA;  
   
                    delete   []strB;  
   
                    return   0;  
   
  }  
   
  Top

5 楼wangweixing2000(星(inspiration(灵感)))回复于 2003-12-04 14:13:33 得分 10

A2CW             (LPCSTR)   ->   (LPCWSTR)  
  A2W             (LPCSTR)   ->   (LPWSTR)  
  W2CA             (LPCWSTR)   ->   (LPCSTR)  
  W2A             (LPCWSTR)   ->   (LPSTR)  
  T2COLE       (LPCTSTR)   ->   (LPCOLESTR)  
  T2OLE       (LPCTSTR)   ->   (LPOLESTR)  
  OLE2CT       (LPCOLESTR)   ->   (LPCTSTR)  
  OLE2T       (LPCOLESTR)   ->   (LPCSTR)  
  用这些宏的时候必须加上这一句:USES_CONVERSION;  
  eg:  
  void   CallSomeMethod(int   ii,   LPCTSTR   lpsz)  
  {  
        USES_CONVERSION;  
        pI->SomeMethod(ii,   T2COLE(lpsz));  
  }  
   
   
  Top

6 楼bluebohe(薄荷)回复于 2003-12-04 14:14:22 得分 60

554A   确实是啊的UNICODE编码,这样转换  
  #include   <comdef.h>  
  WCHAR*   str1=L"啊dsfa";//一个UNICODE字符串  
  _bstr_t   str2=str1;  
  char*   str3=str2;//str3就是普通字符串  
   
  反过来也一样  
  char*   str3="啊dsfa";//普通字符串  
  _bstr_t   str2=str3;  
  WCHAR*   str1=str2;  
   
   
   
  Top

7 楼liuguangzhou(光子)回复于 2003-12-04 16:14:58 得分 0

topwork(日光)的方法不行啊,  
    bluebohe(薄荷)的方法最简单,那再请问,怎么把554A表示出来,我都晕了。拜托了!Top

8 楼bluebohe(薄荷)回复于 2003-12-04 16:22:47 得分 0

WCHAR   str[10];  
  str[0]=0x554a;  
  str[1]=0;  
  _bstr_t   str1=str;  
  char   *str2=str1;  
  pDC->TestOut(0,0,str2);Top

9 楼liuguangzhou(光子)回复于 2003-12-04 16:53:38 得分 0

多谢几位!在你们看来这问题很简单,可是对我这个初学者来说,你们的帮助对我太大了。多谢你们!Top

相关问题

  • 编码转换的问题(Unicode, ASCII)?
  • GB2312编码转换到Unicode编码的问题
  • gb18030编码格式怎么转换成UNICODE编码格式????
  • 各位大侠,请问在VC中如何实现Unicode编码.(或把ANSI编码转换为Unicode编码.)
  • ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~编码转换
  • 如何将一个gb2312编码的字串转换成unicode编码???
  • 如何将unicode编码转换成普通的utf-8或者ISO编码
  • 如何把unicode编码的字符串转换成GB232编码的字串?
  • 如何用javascript把ASCII编码的转换为Unicode的?
  • Unicode编码怎样能转换成汉字?

关键词

  • 转换
  • unicode
  • wszusername
  • wszdomain
  • 请问
  • 字符串
  • 多谢
  • wchar
  • acp
  • computername

得分解答快速导航

  • 帖主:liuguangzhou
  • topwork
  • arvid_gs
  • afantict
  • arvid_gs
  • wangweixing2000
  • bluebohe

相关链接

  • Visual C++类图书
  • Visual C++类源码下载

广告也精彩

反馈

请通过下述方式给我们反馈
反馈
提问
网站简介|广告服务|VIP资费标准|银行汇款帐号|网站地图|帮助|联系方式|诚聘英才|English|问题报告
世纪乐知(北京)网络技术有限公司 版权所有, 京 ICP 证 020026 号
北京创新乐知广告有限公司 提供技术支持
Copyright © 2000-2007, CSDN.NET, All Rights Reserved
GongshangLogo