打开APP
userphoto
未登录

开通VIP,畅享免费电子书等14项超值服

开通VIP
深入图解字符集与字符集编码(八)

在前面其实也谈到了ASCII了,但并没有很具体,作为一个完整系列的一部分,还是有必要谈一下,也作为后面讨论的一些基础。

ASCII


它的全称是American Standard Code for Information Interchange(美国信息交换标准代码),是一个7位字符编码方案。下面是它的一张简图(来自http://www.asciitable.com/index/asciifull.gif):

ASCII定义了128个字符,包括33个不可打印的控制字符(non-printing control characters)和95个可打印的字符。

控制字符

32以下的及最后一个127是所谓的控制字符。(0x00~0x1F以及0x7F)

即上图最左边一列的32个字符及最右边一列最后的一个字符(DEL,删除)

熟悉的有0x09(TAB,horizontal tab,水平制表符),0x0A(LF,line feed,’\n’换行符),0x0D(CR,carriage return,’\r’回车符),其它的很多现在已经是废弃不用了。

关于回车换行(‘\r\n’),在屏幕还不普及的时代,结果输出经常是依赖于所谓的电传打印机,打印头沿着打印杆从左向右移动并打印出一个个字符,当碰到一个回车符时(CR,0x0D,’\r’),打印机就指示打印头重新回到最左边的位置上,这即是传统意义上的回车了。(你可以把打印头想像成一辆小车,回车即是退回原处,现代意义上的回车则通常包含回车与换行两个动作)

回车符后常跟着一个换行符(LF,0x0A,’\n’),打印机收到换行符就会指示滚筒滚动,这样,打印头就对准了纸张上的新的一行。如果没有换行,新的打印输出就会重叠在上一行上,有时走纸不顺畅时也会造成这种后果。

目前,在Windows系统上,回车键会产生两个字符CRLF,一起表示换行。Unix/Linux之类的则单独用LF表示换行,而苹果的Mac则单独用CR来表示换行。

其它字符

包括空格,字母,数字以及一些常见的标点符号等。

关于空格(SPACE,图中第二列第一个,0x20),它没被归到控制字符类,当然,你可能会纠结它是否算可打印的。

由于只定义了27=128个字符,用7bit即可完全编码,而一字节8bit的容量是256,所以一字节ASCII的编码最高位总是0,这为后来的编码方案兼容它带来的便利。

ISO-8859-1


ISO-8859-1又称Latin-1,是一个8位单字节字符集,它把ASCII的最高位也利用起来,并兼容了ASCII,新增的理论空间是128,但它并没有完全用完:(截图来自http://zh.wikipedia.org/wiki/ISO/IEC_8859-1

可以看到,新增部分也保留了前面的32个位置(中间绿色部分,0x80-0x9F),与前面的ASCII部分类似,所以实际只增加了128-32=96个,主要是西欧的一些字符,另外可以看到乘号(0xD7)和除号(0xF7)也被包含进来了。

0x00-0x1F、0x7F、0x80-0x9F在此字符集中未有定义。(即图中的绿色部分)

ISO-8859-1能与ASCII兼容,同时它的适用范围又较广,一些协议或软件把它作为一种缺省编码,当然,现在更好的选择是UTF-8。

本站仅提供存储服务,所有内容均由用户发布,如发现有害或侵权内容,请点击举报
打开APP,阅读全文并永久保存 查看更多类似文章
猜你喜欢
类似文章
【热】打开小程序,算一算2024你的财运
关于linux和windows的CR, LF, CR/LF 回车 换行问题
文本或代码中 \n 和 \r 的区别
ASCII字符集中的功能/控制字符
TELNET协议规范
【小技巧】UltraEdit中替换操作如何替换特殊字符(比如回车)
SMS模块
更多类似文章 >>
生活服务
热点新闻
分享 收藏 导长图 关注 下载文章
绑定账号成功
后续可登录账号畅享VIP特权!
如果VIP功能使用有故障,
可点击这里联系客服!

联系客服