字符编码教学(字符编码知识整理-汉牛笔记)
字符字符(Character)是各种文字和符号的总称,包括各国家文字、标点符号、图形符号、数字等是人类能直接识别和处理的符号,我来为大家科普一下关于字符编码教学?以下内容希望对你有帮助!
字符编码教学
前言字符
字符(Character)是各种文字和符号的总称,包括各国家文字、标点符号、图形符号、数字等。是人类能直接识别和处理的符号。
字符集
字符集(Characterset)是字符的集合。
字符编码
计算机只能处理二进制信息,所以需要对每一个字符进行二进制编码。对字符进行编码的二进制代码称为字符编码。
乱码问题
在不同的字符编码标准下,同一个字符的二进制编码可能不同。如果用A编码存储的信息,用B编码去解读,就会出现乱码问题。
常见的字符编码
ASCII
American Standard Code for Information Interchange(ASCII - 美国国家信息交换标准码)。一种使用7个或8个二进制位进行编码的方案,最多可以给256个字符(包括字母、数字、标点符号、控制字符及其他符号)分配数值。参见下文《附录:ASCII编码集》。
标准ASCII码是7位编码,对应的ISO标准为ISO646标准,一个字节中多余出来的一位(最高位)在计算机内部通常保持为0。
由于标准ASCII字符集字符数目有限,而且是针对英语设计的,当处理带有音调标号(形如汉语的带声调字母)的欧洲文字时就会出现问题,为此,国际标准化组织又制定了ISO2022标准,将ASCII字符集扩充为8位代码的统一方法,这些扩充字符的编码均为高位为1的8位代码(即十进制数128~255),称为扩展ASCII码。
ANSI
American National Standards Institute(ANSI - 美国国家标准学会),由公司、政府和其他成员组成的自愿组织。
为了扩充ASCII编码,以用于显示本国的语言,不同的国家和地区制定了不同的标准。这些使用2个字节来代表一个字符的各种汉字延伸编码方式,称为ANSI编码,又称为MBCS(Muilti-Bytes Charecter Set,多字节字符集)。在简体中文系统下,ANSI编码代表GB2312编码,在日文操作系统下,ANSI编码代表JIS编码,在宝岛台湾的繁体中文系统下,ANSI编码代表BIG5编码。
GB2312
GB2312码是中华人民共和国国家汉字信息交换用编码,全称《信息交换用汉字编码字符集——基本集》,由国家标准总局发布,1981年5月1日实施,通行于大陆,新加坡等地也使用此编码。共收入汉字6763个和非汉字图形字符682个。
BIG5
大五码(Big5),又称为五大码,一种繁体中文汉字字符集,其中繁体汉字13053个,808个标点符号、希腊字母及特殊符号。是1984年由台湾13家厂商与台湾地区财团法人信息工业策进会为五大中文套装软件(宏碁、神通、佳佳、零壹、大众)所设计的中文内码,是使用繁体中文社群中最常用的电脑汉字字符集标准,在在台湾、香港与澳门地区使用广泛。
Big5码的产生背景:当时台湾不同厂商各自推出不同的编码,如IBM5550、王安码等,彼此不能兼容;另一方面,台湾当时尚未推出官方的汉字编码,而中国内地所推行的GB2312编码,亦未有收录繁体字。
GBK
GBK是汉字编码标准之一,全称《汉字内码扩展规范》,Chinese Internal Code Specification,由中华人民共和国全国信息技术标准化技术委员会1995年12月1日制订。GBK采用双字节编码,总计23940个码位,共收入21886个汉字和图形符号,其中汉字(包括部首和构件)21003个,图形符号883个。
Unicode
使用ANSI编码,世界上存在着多种编码方式,在ANSI编码下,同一个编码值,在不同的编码体系里代表着不同的字。导致国际电子邮件和网页经常出现乱码,就是因为信息的提供者可能是日文的ANSI编码体系和信息的读取者可能是中文的编码体系,他们对同一个二进制编码值进行显示,采用了不同的编码,导致乱码。
如果有一种编码,将世界上所有的符号都纳入其中,无论是英文、日文、还是中文等,大家都使用这个编码表,就不会出现编码不匹配现象。每个符号对应一个唯一的编码,乱码问题就不存在了。这就是Unicode编码。
Unicode是一个很大的集合,规定用4个字节存储一个符号,现在的规模可以容纳100多万个符号,世界上的每一个符号的编码都不一样。
UTF
UTF是Unicode Translation Format,即把Unicode转做某种格式的意思。Unicode固然统一了编码方式,但是它的效率不高,比如每个英文字母前都必然有三个字节是0,这对存储和传输来说都很耗资源。为了提高Unicode的编码效率,于是就出现了UTF编码。目前存在的UTF格式有:UTF-7,UTF-7.5,UTF-8,UTF-16,以及UTF-32。
UTF-8
UTF-8是Unicode的一种变长字符编码,又称万国码,使用1到6个字节编码UNICODE字符,比如英文字母可以只用1个字节就够了。
UTF-16
UTF-16比起UTF-8,好处在于大部分字符都以固定长度的字节(2字节)储存,但UTF-16却无法兼容于ASCII编码。
附录:ASCII编码集
ASCII编码集
免责声明:本文仅代表文章作者的个人观点,与本站无关。其原创性、真实性以及文中陈述文字和内容未经本站证实,对本文以及其中全部或者部分内容文字的真实性、完整性和原创性本站不作任何保证或承诺,请读者仅作参考,并自行核实相关内容。文章投诉邮箱:anhduc.ph@yahoo.com