Windows中字符与字符串

来源:互联网 发布:汽轮机热力计算软件 编辑:程序博客网 时间:2024/06/10 04:05

Windows编程中,字符的编码问题在使用中有着重要的地位,刚开始工作,就遇到乱码的问题,听到UTF8,以及代码中无数“_T”,都懵了。看了Windows核心编程,才对这些编码类型有些眉目了

  • 字符编码基础

  • ANSI编码(American National Standards Institute):一个字节(8bit)存储一个字符,最多只能表示256个字符,估计只能用在英语里吧,只有字母,汉语等其他丰富的语言,就难于表示了,于是就有了UNICODE标准
  • UTF-8编码(Unicode Transfomation Format):一些字符被编码成1个、2个、3个或者4个字节,0x0080以下的字符,压缩为1个字节,该编码格式也是一种比较流行的编码。我印象是在网络传输中用的多
  • UTF-16编码:一个字符编码为2个字节。在Windows Vista中,所有Unicode字符都使用UTF-16编码格式
  • UTF-32编码:一个字符编码为4个字节。该编码方式不高效,网络传输中一般不用。
现在我终于明白了,之所以字符串被截断,会出现乱码,是因为依据字节被截断后,截断的部分如果是一个2字节以上的字符,则该字符被截成两段,就会在截断初出现乱码。
平时打开一些文本文件,会乱码,也是同样原因,字符编码与读取的时候采用的编码方法不一致,就会出现这样的问题。

  • Windows中的字符与字符串

  • Windows中的字符与字符串处理函数,内部都是采用Unicode字符与Unicode字符串来进行的,因此编码过程中,采用Unicode格式,能够提高程序u的执行效率
  • Unicode有利于程序的本地化:这句话我也不太能够理解,不过想想Unicode可以转换为二进制DLL的形式,应该可以多平台吧,以后再验证一下这个想法
  • Unicode容易与COM集成,COM也采用Unicode,就这么简单
  • 一个字符串也也就是字符的集合,不是char,也不是字节,至于字符串的数组具体到底占用几个字节,那就看编码格式了
  • 用TCHAR/PTSTR来表示和字符串
  • 用BYTE/PBYTE来定义字节类型
  • 用TEXT/_T来表示字面量的字符/字符串
  • 得到szBuffer的字符数,采用__countof(szBuffer),得到其字节数,则简单用sizeof即可



原创粉丝点击