Unicode编码&&多字节字符集

       在使用vs编写MFC程序的时候,工程属性经常会让你选择编码方式,一般默认为Unicoude编码,当然也可以选择多字节字符集编码,因此我们就有必要讨论其区别:

1.   ASCII码表: 用7位表示,因此只能表示128个字符【26个小写字母、26个大写字母、10个数字、32个符号、33个句柄和一个空格】,扩展的ASCII码表用 8位表示,可以表示256个字符。【包括某些带重音的字符和一个小写希腊字母表,还包括一些 块型和线状图形字符】

      双字节字符集(DBCS):问题在于有的字符是一个字节表示(如ASCII码表中字符),有的由双字节表示。----也就是ANSI字符集
      Unicode字符集:              使用宽字符集,每个字符都由两个字节表示,范围0~65536,能够表示更多的字符。

2. 关于TCHAR:

    如果定义了_UNICODE标识符,那么TCHAR就是wchar_t:typedef wchar_t TCHAR ;    
    否则,TCHAR就是Char:typedef char TCHAR ;  

3.关于CHAR和WCHAR

    typedef char CHAR ;  //一个8位的char   
    typedef wchar_t WCHAR ;    // wc   一个16位的wchar_t   

4.关于_T:

   如果定义了_UNICODE标识符,那么一个称作_T的宏就定义如下:
    #define _T(x) L##x   //也就是L“aaa”,用于Unicode编码
   如果没有定义_UNICODE标识符,则_T宏只简单地定义如下:
    #define _T(x) x       

5.关于指针

   (1)WINNT.H表头文件定义了8位字符串指针的六种数据型态和四个可用做const 8位字符串指针的数据型态:

            typedef CHAR * PCHAR, * LPCH, * PCH, * NPSTR, * LPSTR, * PSTR ;       

            typedef CONST CHAR * LPCCH, * PCCH, * LPCSTR, * PCSTR ;

   (2)WINNT.H定义了六种可作为16位字符串指针的数据型态和四种可作为const 16位字符串指针的数据型态:

            typedef WCHAR * PWCHAR, * LPWCH, * PWCH, * NWPSTR, * LPWSTR, * PWSTR ;       

            typedef CONST WCHAR * LPCWCH, * PCWCH, * LPCWSTR, * PCWSTR ;

6.字符串操作函数

    如果定义了名为_UNICODE的标识符,并且程序中包含了TCHAR.H表头文件,那么_tcslen就定义为wcslen:

     #define _tcslen wcslen

    如果没有定义UNICODE,则_tcslen定义为strlen:

    #define _tcslen strlen   

7.关于MessageBox

    如果定义了_UNICODE标识符,#define MessageBox  MessageBoxW 

    如果没有定义_UNICODE标识符,#define MessageBox  MessageBoxA

 

还有很多不完善也不了解的地方,比如字符串函数的具体操作等等,用到了再从网上寻找吧。

 

 

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值