搞定字符集与字符编码

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了搞定字符集与字符编码相关的知识,希望对你有一定的参考价值。

1、什么是字符集?

  字符:文字、符号。包含各个国家文字、标点符号,图形,数字等

  字符集:多个字符的集合(多个文字、符号的集合),不同字符集包含的字符个数不同。

   

2、什么是字符编码?    

 字符编码:字符集只字符的集合,不适用于网络传输,计算机想准确处理及向硬盘存储各种字符集中的文字、符号,需要经过字符编码,010101的组合对应哪种字符集中的哪些文字,字符编码就是将文字与符号转换为计算机可以接受的数字用于存储与网络传送,就叫字符编码

 简单的说,字符编码就是以二进制的数字来对应字符集中的字符。对字符进行编码,是信息交流的基础。


哪些汉字、符号与字母会被收录在标准中,这个标准就叫字符集。

规定每个“字符”用一个字节还是多个字节存储,怎样存储,这个规定就叫“编码”。


各个国家和地区在制定编码标准时,“字符集合”和“编码”都是同时定制的。因此我们平常说的“字符集”,如:GB-2312,ASCII等,既包含了字符集,也包含了字符编码。


常用字符集与字符编码:

ASCII字符集&编码:

ASCII(American Standard Code for Information Interchange,美国信息交换标准代码)是基于拉丁字母的一套电脑编码系统,主要用于显示现代英语。它是目前最通用的单字节编码系统。


ASCII字符集:主要包括控制字符(回车、退格、换行等);显示字符(英文大小写字符,阿拉伯数字和西文符号)。


ASCII编码:即将 ASCII 字符集转换为计算机可以接受的数字系统的规则。使用 7 位(bits)表示一个字符,能表示的字符个数为2的7次方=128 个字符,为了能够表示更多的欧洲常用字符对 ASCII 进行了扩展,ASCII扩展字符集使用8位(bits)表示一个字符,共可以表示2的8次方= 256 字符。


ASCII缺点:

    ASCII的最大缺点是只能显示26个基本拉丁字母、阿拉伯数字与英式标点符号,因此只能用于显示现代美国英语,升级版 EASCII虽然可以表示西欧语言,但对于其它国家的语言依然无法表示,因此现在苹果电脑已经改用 Unicode 做为字符编码。


GB2312,GB12345字符集&编码:

计算机发明后很长一段时间,只是应用在美国等一些西方发达国家,ASCII 字符集与编码能够满足这些需求,当计算机进入天朝后,为了在计算机上显示中文,必须设计一套编码规则用于将汉字转换为计算机可以接受的数字系统的数。


砖家规定大于127号以后的符号取消,规定:小于127的字符意义不变即还是表示英文,但两个大于127的字符连在一起时,就表示一个汉字,换句话说一个汉字占用两个字节,可以表示出大约7000多个简体汉字,在这些编码中,还将数学符号、罗马希腊的字母、日文的假名都编进去了。


全角与半角?

  全角与半角指的范围是除汉字以外的其它字符(标点符号、字母、数字等)占用的位置大小,在计算机屏幕上,一个汉字要占两个英文字符的位置,人们把一个英文字符所占的位置称为“半角”,相对地把一个汉字所占的位置称为“全角”。在汉字输入时,系统提供“半角”和“全角”两种不同输入状态,但对于英文字母、符号和数字这些通用字符就不同于汉字,在半角状态下输出,它们被当做英文字符处理;而在全角状态,它们又可作为中文字符处理;

  当我们用输入法时,将输入法切换到英文状态输入到屏幕上的符号是这样的:,.!?  

  将输入法切换到中文状态输入到屏幕上的符号是这样的:,。!? 

!!! 英文状态下输入的符号,字母数字都是半角,中文状态下输出的符号,字母数字都是全角!!!



伟大的 Unicode:(万国码)

 与天朝一样,当计算机传入世界各国时,各国纷纷制定适合本国语言的字符编码,这样在本地使用固然没有问题,通过网络传送到其它国家后,编码无法互相对应,就会出现乱码现象。

为了解决这个问题,国际组织制定了伟大的 Unicode 字符集,收录进了世界各国的语言,为每种语言中的每一个字符设定了统一并且唯一的数字编号,以满足跨语言、跨平台进行文本转换,处理的要求。

 它使用4字节的数字来表示每个字母、符号或文字每个数字代表唯一的至少在某种语言中使用的符号。(世界各国的文字、数字、符号加起来已经超过2字节(2的16次方=65535),所以用4字节来表示)其中被几种语言共用的字符通常使用相同的数字来编码。

 Unicode在不断扩增,每个新版本会插入更多的新字符,到目前为止已经发展到第六版,Unicode 已经包含了超过十万个字符。Unicode组织由一个非营利性的机构动作,并主导Unicode的后续发展,其目标在于:将既有的字符编码方案以 Unicode 编码方案来加以取代,解决不同字符集间不兼容的问题。

注意:Unicode是字符集,UTF-32/UTF-16/UTF-8 是Unicode 字符集的三种字符编码方案。


本文出自 “那些颠沛留离的日子。” 博客,请务必保留此出处http://linuxzj.blog.51cto.com/6160158/1789927

以上是关于搞定字符集与字符编码的主要内容,如果未能解决你的问题,请参考以下文章

刨根究底字符编码之九——字符编码方案的演变与字节序

关于Python字符编码encode和decode

Unicode中文和特殊字符的编码范围

字符集与字符编码详解

采用霍夫曼编码(Huffman)画出字符串各字符编码的过程并求出各字符编码 --多媒体技术与应用

字符编码与字符集