浅谈计算机中编码方式

来源:互联网 发布:循环冗余检查算法 编辑:程序博客网 时间:2024/04/30 21:28

所谓计算机编码,就是将通用的语言转换为能在计算机交流的语言。

1. 汉字编码

汉字编码分两种,国标码,机内码。

 (1)国标码,即GB2312-80在国标码的字符集中,收集了一级汉字3755个,二级汉字3008个,图形符号682个,共7445个。一个汉字对应一个区位码,由四位数字组成,前两位数字(0-94),为区码,后两位(0-94)为位码。

  (2) 机内码是指汉字在计算机中的编码 ,汉字的机内码占两个字节,分别称为机内码的高位与低位。它们与区位码的关系如下:机内码高位=区码+A0H ,机内码低位=位码+A0H。 汉字字库是由所有汉字的字模信息构成的。一个汉字字模信息占若干字节,究竟占多少个字节由汉字的字形决定。例如,如果用16×16点阵表示一个汉字,则一个汉字占16行,每行有16个点,在存储时用两个字节存放一行上16个点的信息,对应位为"0"表示该点为"白","1"表示该点为"黑"。因此,一个16×16的汉

占2*16=32个字节。

2.英文字符编码:英文由于使用国家众多,最初标准鱼龙混杂,最后,美国有关的标准化组织出台了ASCII(American Standard Code for Information Interchange)编码,统一规定了英文常用符号用哪些二进制数来表示。ASCII是标准的单字节字符编码方案,用于基于文本的数据。

而对于我们Internet来说,各种语言都有,不仅有中文,英文,还有日文,法文等诸多语言,如果没有一种共同的编码方式,将会造成很大的不便。

附ascii表二进制十进制十六进制缩写可以显示的表示法名称/意义0000 0000000NUL␀空字符(Null)0000 0001101SOH␁标题开始0000 0010202STX␂本文开始0000 0011303ETX␃本文结束0000 0100404EOT␄传输结束0000 0101505ENQ␅请求0000 0110606ACK␆确认回应0000 0111707BEL␇响铃0000 1000808BS␈退格0000 1001909HT␉水平定位符号0000 1010100ALF␊换行键0000 1011110BVT␋垂直定位符号0000 1100120CFF␌换页键0000 1101130DCR␍归位键0000 1110140ESO␎取消变换(Shift out)0000 1111150FSI␏启用变换(Shift in)0001 00001610DLE␐跳出数据通讯0001 00011711DC1␑设备控制一(XON 启用软件速度控制)0001 00101812DC2␒设备控制二0001 00111913DC3␓设备控制三(XOFF 停用软件速度控制)0001 01002014DC4␔设备控制四0001 01012115NAK␕确认失败回应0001 01102216SYN␖同步用暂停0001 01112317ETB␗区块传输结束0001 10002418CAN␘取消0001 10012519EM␙连接介质中断0001 1010261ASUB␚替换0001 1011271BESC␛跳出0001 1100281CFS␜文件分割符0001 1101291DGS␝组群分隔符0001 1110301ERS␞记录分隔符0001 1111311FUS␟单元分隔符0111 11111277FDEL␡删除

ASCII可显示字符

二进制十进制十六进制图形0010 00003220(空格)(␠)0010 00013321!0010 00103422"0010 00113523#0010 01003624$0010 01013725 %0010 01103826&0010 01113927'0010 10004028(0010 10014129)0010 1010422A*0010 1011432B+0010 1100442C,0010 1101452D-0010 1110462E.0010 1111472F/0011 0000483000011 0001493110011 0010503220011 0011513330011 0100523440011 0101533550011 0110543660011 0111553770011 1000563880011 1001573990011 1010583A:0011 1011593B;0011 1100603C<0011 1101613D=0011 1110623E>0011 1111633F? 二进制十进制十六进制图形0100 00006440@0100 00016541A0100 00106642B0100 00116743C0100 01006844D0100 01016945E0100 01107046F0100 01117147G0100 10007248H0100 10017349I0100 1010744AJ0100 1011754BK0100 1100764CL0100 1101774DM0100 1110784EN0100 1111794FO0101 00008050P0101 00018151Q0101 00108252R0101 00118353S0101 01008454T0101 01018555U0101 01108656V0101 01118757W0101 10008858X0101 10018959Y0101 1010905AZ0101 1011915B[0101 1100925C\0101 1101935D]0101 1110945E^0101 1111955F_ 二进制十进制十六进制图形0110 00009660`0110 00019761a0110 00109862b0110 00119963c0110 010010064d0110 010110165e0110 011010266f0110 011110367g0110 100010468h0110 100110569i0110 10101066Aj0110 10111076Bk0110 11001086Cl0110 11011096Dm0110 11101106En0110 11111116Fo0111 000011270p0111 000111371q0111 001011472r0111 001111573s0111 010011674t0111 010111775u0111 011011876v0111 011111977w0111 100012078x0111 100112179y0111 10101227Az0111 10111237B{0111 11001247C|0111 11011257D}0111 11101267E~

 

3.通用字符Unicode(universal character set)通用字符集

编码方式:采用的是UCS-2,使用16位编码空间,满足了各类语言的使用。

实现方式:utf(Unicode Transformation Format)之所以有不同的实现方式,是为了节省空间而考虑的。如utf-8.一种变长编码,因为西文字符中通常是7位的ascii字符,UTF-8,他将7位的ascii字符仍用7位编码表示,占用一个字节(首位补0),而遇到其他的unicode字符混合情况,将按一定算法转换,每个字符使用1-3个字节编码,并利用首位为0,1进行识别。还有UTF-16等。

4.此外对于不同的设备,对相同字符读取字节顺序也有不同,mac设备从低字节读取,windows和linux从高字节读取,分别命名为,UTF-16-BE(大端序),UTF-16 -LE(小端序)。

/*********************分割线***************************************/

在web编程中通常会涉及到字符转换,而对编程语言通常有相应的函数

html中:<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />  %注意设置在title前面,否则title会显示为其他字符方式

PHP中:header("Content-Type: text/html;charset=utf-8");

此外推荐一个软件,csdn一个网友编写的字符转换软件