几种常用编码及其用法介绍
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)一块比较大的空间出来。
编码是根据一定的协议或格式把模拟信息转换成比特流的过程。
在计算机硬件中,编码(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)一块比较大的空间出来。
相关文章推荐
- 常用编码介绍
- 结合Scikit-learn介绍几种常用的特征选择方法
- 干货:结合Scikit-learn介绍几种常用的特征选择方法
- android设置中常用的PreferenceActivity用法介绍
- Linux 常用环境变量及作用和环境变量文件的详细介绍及其加载执行顺序
- C语言stdio头文件包含内容介绍(常用函数用法简介)
- C语言常用数学函数及其用法
- Maven介绍,包括作用、核心概念、用法、常用命令、扩展及配置
- snmptrap、snmpinform和snmptrapd的详细介绍及其用法
- 结合Scikit-learn介绍几种常用的特征选择方法
- ***常用***手段揭秘及其预防措施介绍
- 几种常用树介绍
- Maven介绍,包括作用、核心概念、用法、常用命令、扩展及配置
- 批处理文件常用命令及其用法
- 批处理文件常用命令及其用法(2)
- vim编辑器介绍及其常用命令
- 函数指针介绍及其用法
- 几种常用的隐式Intent用法
- html常用标签及其属性用法
- Maven介绍,包括作用、核心概念、用法、常用命令、扩展及配置