Unicode编码,分为大端、小端 。
所谓BOM头(Byte Order Mark)就是文本文件中开始的几个并不表示任何字符的字节。
UTF8的BOM头为0xEF 0xBB 0xBF
Unicode大端模式为 0xFE 0xFF
Unicode小端模式为 0xFF 0xFE
美国国家标准协会ANSI制定的一个标准,规定了常用字符的集合以及每个字符对应的编号,这就是ASCII字符集(Character Set),也称ASCII码。
其中:
0~31及127(共33个)是控制字符或通信专用字符(其余为可显示字符),如控制符:LF(换行)、CR(回车)、 FF(换页)、DEL(删除)、BS(退格)
32~126(共95个)是字符(32 是空格),其中 48~57 为0到9十个阿拉伯数字。
65~90为26个大写英文字母,97~122 号为 26 个小写英文字母,其余为一些标点符号、运算符号等。
后128个称为扩展ASCII码。许多基于x86的系统都支持使用扩展(或“高”)ASCII。扩展ASCII码允许将每个字符的第 8位用于确定附加的128个特殊符号字符、外来语字母和图形符号。
全角是一种电脑字符,每个全角字符占用两个标准字符(或半角字符)位置。通常的英文字母、数字键、符号键都是半角的,半角的显示内码都是一个字节。
为了排列整齐,英文和其它拉丁文的字符和标点也提供了全角格式。
Unicode字符集涵盖了目前人类使用的所有字符,并为每个字符进行统一编号,分配唯一的字符码(Code Point)。
Unicode字符集将所有字符按照使用上的频繁度划分为17个层面(Plane),每个层面上有 216=65536 个字符码空间。
其中第0个层面BMP,基本涵盖了当今世界用到的所有字符。其他的层面要么是用来表示一些远古时期的文字,要么是留作扩展。
我们平常用到的Unicode字符,一般都是位于BMP层面上的。目前Unicode字符集中尚有大量字符空间未使用。
在Unicode出现之前,所有的字符集都是和具体编码方案绑定在一起的(即字符集≈编码方式),都是直接将字符和最终字节流绑定死了,
从unicode到uft-8并不是直接的对应,而是要过一些算法和规则来转换 。
UTF-8就是每次8个位传输数据,而UTF-16就是每次16个位。UTF-8最大的一个特点,就是它是一种变长的编码方式。
它可以使用 1~4个字节表示一个符号。Unicode只是定义了一个庞大的、全球通用的字符集,并为每个字符规定了唯一确定的编号,具体存储成什么样的字节流,取决于字符编码方案。
Unicode编码,则是对UTF-8、UCS-2/UTF-16等具体编码方案的统称而已,并不是具体的编码方案。
术语:
OEM字符集
多字节字符集(MBCS):(Muilti-Bytes Charecter Set)
ANSI 标准、国家标准、 ISO 标准
UTF(UCS Transfer Format)标准
对于单字节的UTF-8编码,该字节的最高位为0,其余7位用来对字符进行编码(等同于ASCII码)。
对于多字节的UTF-8编码,如果编码包含 n个字节,那么第一个字节的前n位为1,第一个字节的第n+1位为0,该字节的剩余各位用来对字符进行编码。
在第一个字节之后的所有的字节,都是最高两位为"10",其余6位用来对字符进行编码。
原文:https://www.cnblogs.com/088-p/p/14585084.html