您的位置:首页 > Web前端

几种常用编码及其用法介绍

2009-06-03 17:36 323 查看
编码定义
    编码是根据一定的协议或格式把模拟信息转换成比特流的过程。
    在计算机硬件中,编码(coding)是在一个主题或单元上为数据存储,管理和分析的目的为转换信息为编码值(典型地如数字)的过程。
    在软件中,编码意味着逻辑地使用一个特定的语言如C或C++来执行一个程序
   
ASCII与Binary码:
  我们日常接触到的文件分ASCII和Binary两种。ASCII是“美国信息交换标准编码”的英文字头缩写,可称之为“美标”。美标规定了用从0到127的128个数字来代表信息的规范编码,其中包括33个控制码,一个空格码,和94个形象码。形象码中包括了英文大小写字母,阿拉伯数字,标点符号等。我们平时阅读的英文电脑文本,就是以形象码的方式传递和存储的。美标是国际上大部分大小电脑的通用编码。
  然而电脑中的一个字符大都是用一个八位数的二进制数字表示。这样每一字符便可能有256个不同的数值。由于美标只规定了128个编码,剩下的另外128个数码没有规范,各家用法不一。另外美标中的33个控制码,各厂家用法也不尽一致。这样我们在不同电脑间交换文件的时候,就有必要区分两类不同的文件。第一类文件中每一个字都是美标形象码或空格码。这类文件称为“美标文本文件”(ASCII Text Files),或略为“文本文件”,通常可在不同电脑系统间直接交换。第二类文件,也就是含有控制码或非美标码的文件,通常不能在不同电脑系统间直接交换。这类文件有一个通称,叫“二进制文件”(Binary Files)。

unicode码:
    Unicode其实就是宽字节字符集,它对每个字符都固定使用两个字节即16位表示。这样的话,可以表示的字符类型就可以多达6万多。所有之前的ASCII码分布在0x0000-0x00ff之间,而汉字(包括big5)分布在0x4e00到0x9fff之间。它为每种语言中的每个字符设定了统一并且唯一的二进制编码,以满足跨语言、跨平台进行文本转换、处理的要求。

_UNICODE宏:
   (TCHAR)通用字符类型:是为了统一多语言编码而设计的。当定义了_UNICODE宏的时候,TCHAR就是WCHAR,当你没有定义这个宏的时候,TCHAR就是char。TCHAR的定义:
  #ifdef   UNICODE                    
  typedef WCHAR TCHAR, *PTCHAR;  //WCHAR每个字符占2个字节
  #else              
  typedef  char TCHAR, *PTCHAR;
  #endif

    _T("string")的含义和_UNICODE宏定义有关,是将UNICODE宏转成unicode字符.  
    在《windows程序设计》里面有介绍~~  
例如:  
  #ifndef   _UNICODE  
  #define   _T(string)     string  
  #else  
  #define   _T(string)   _W(string)  
  #endif  
 
GBK码:
  GBK码是GB码的扩展字符编码,对多达2万多的简繁汉字进行了编码,简体版的Win95和Win98都是使用GBK作系统内码。

附录:
    GetBuffer:这个MFC函数是为一个CString对象重新获取其内部字符缓冲区的指针,返回的LPTSTR为非const的,从而允许直接修改CString中的内容!如果nMinBufLength 比当前buffer大,那么就调用ReleaseBuffer函数去释放当前的Buffer,用一个被请求的大小去覆盖这个buffer
一.函数原型
CString::GetBuffer
LPTSTR GetBuffer( int nMinBufLength );
    当设定的长度小于原字符串长度时,nMinBufLength = nOldLen,该参数会被忽略,不分配内存,指向原CString;当设定的长度大于原字符串本身的长度时就要重新分配(reallocate)一块比较大的空间出来。

 
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息