ascii码及其汉字编码
名称
( American Standard Code for Information Interchange, ASCII )
编辑本段
产⽣
在计算机中,所有的数据在和运算时都要使⽤表⽰(因为计算机⽤⾼电平和低电平分别表⽰1和0),例如,像a、b、c、d这样的52个字母(包括⼤写)、以及0、1等数字还有⼀些常⽤的符号(例如*、#、@等)在计算机中存储时也要使⽤⼆进制数来表⽰,⽽具体⽤哪些⼆进制数字表⽰哪个符号,当然每个⼈都可以约定⾃⼰的⼀套(这就叫),⽽⼤家如果要想互相通信⽽不造成混乱,那么⼤家就必须使⽤相同的编码规则,于是美国有关的标准化组织就出台了所谓的,统⼀规定了上述常⽤符号⽤哪些⼆进制数来表⽰。
信息交换代码是由美国国家标准学会(American National Standard Institute , ANSI )制定的,标准的单字符编码⽅案,⽤于基于的数据。起始于50年代后期,在1967年定案。它最初是美国国家标准,供不同计算机在相互通信时⽤作共同遵守的西⽂标准,它已被国际标准化组织(International Organization for
Standardization, ISO)定为国际标准,称为ISO 646标准。适⽤于所有拉丁⽂字字母。
编辑本段
简介
ASCII 码使⽤指定的7 位或8 位组合来表⽰128 或256 种可能的。标准ASCII 码也叫基础ASCII码,使⽤7 位⼆进制数来表⽰所有的⼤写和⼩写字母,数字0 到9、标点符号, 以及在美式英语中使⽤的特殊。其中:
0~31及127(共33个)是控制字符或通信专⽤字符(其余为可显⽰字符),如控制符:LF(换⾏)、CR()、FF(换页)、DEL(删除)、BS(退格)、BEL(响铃)等;通信专⽤字符:SOH(⽂头)、EOT(⽂尾)、ACK(确认)等;ASCII值为8、9、10 和13 分别转换为退格、制表、换⾏和回车字符。它们并没有特定的图形显⽰,但会依不同的应⽤程序,⽽对显⽰有不同的影响。
32~126(共95个)是字符(32sp是空格),其中48~57为0到9⼗个阿拉伯数字
65~90为26个⼤写英⽂字母,97~122号为26个⼩写英⽂字母,其余为⼀些标点符号、运算符号等。
同时还要注意,在标准ASCII中,其最⾼位(b7)⽤作。所谓奇偶校验,是指在代码传送过程中⽤来检验是否出现错误的⼀种⽅法,⼀般分和偶校验两种。奇校验规定:正确的代码⼀个中1的个数必须是奇数,若⾮奇数,则在最⾼位b7添1;偶校验规定:正确的代码⼀个字节中1的个数必须是偶数,若⾮偶数,则在最⾼位b7添1。
后128个称为码,⽬前许多基于的系统都⽀持使⽤扩展(或“⾼”)ASCII。扩展ASCII 码允许将每个字符的第8 位⽤于确定附加的128 个特殊符号字符、外来语字母和图形符号。
编辑本段
标准ASCII表
Bin Dec Hex缩写/字符解释
unicode汉字0000 0000000NUL(null)空字符
0000 0001101SOH(start of headline)标题开始
0000 0010202STX (start of text)正⽂开始
0000 0011303ETX (end of text)正⽂结束
0000 0100404EOT (end of transmission)传输结束
汉字编码
0-127 是 7位ASCII 码的范围,是国际标准。
⾄于汉字,不同的字符集⽤的ascii 码的范围也不⼀样,常⽤的汉字字符集有GB2312-80,GBK,
Big5,unicode 等。下⾯我重点说⼀说最常⽤的GB_2312 的字符集。
GB_2312 字符集是⽬前最常⽤的汉字编码标准,windows 95/98/2000 中使⽤的 GBK字符集 就包含了GB2312,或者说和
GB2312 兼容,GB_2312 字符集包含了 6763个的 简体汉字,和682 个标准中⽂符号。在这个标准中,每个汉字⽤2个字节来表⽰,每个字节的ascii码为 161-254 (16 进制A1 - FE),第⼀个字节 对应于 区码的1-94 区,第⼆个字节 对应于位码的1-94 位。
161-254 其实很好记忆,⼤家知道英⽂字符中,可打印的字符范围为33-126。将 这对 数加上
128(或者说最⾼位置1),就得到汉字使⽤的字符的范围。
//GB18030的规范是汉字第⼀个字节在0x81-0xFE之间,第⼆个字节位于区间0x40-0x7E以及0x80-0xFE。每个字节转化为整数⼤于128。
if ((char_temp>=0x81)&&(char_temp<=0xFE))
{
if(*len<nlen)
{
*len+=1;
*p_temp++=char_temp;
_putch(char_temp);
x++;
}
}
结束语:vc使⽤的默认编码是ascii码,汉字可能是GB18030,在linux 需要转化编码,⽤linux下所有的编码,Qt下的utf-8可以⽤编码转换⼩⼯具convert进⾏转换。
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论