unicode、UTF-8、ASCII等编码方式的关系
2016-03-11 15:27
1051 查看
今天复习一些基础的时候,又看到”编码方式“的这个名词了。
搜索了一些资料,算是搞清了ASCII、unicode、UTF-8的关系了。
1、ASCII
ASCII是很久之前美国制定的一套字符编码,是英文字符到某个id的一个映射。
这个编码方式用一个字节来表示英文字符,但字节的最高位固定为0,可用字节位数为7位。
也就是说,ASCII最多只能表示2^7 = 128个字符
2、unicode
单单ASCII肯定是不够用的,毕竟世界上有那么多国家,不同国家之间很多都使用不同的语言。
在没有unicode的时候,各个国家自己可能都有一套编码方式,这对交流带来很大的不便。
为了统一,就出现了unicode。
简单来讲,unicode的目的就是为世界上的字符制定一个从字符到独一无二的id的映射。
可以从http://www.unicode.org/Public/UCD/latest/charts/这个网站下载unicode的编码表。
3、UTF-8
UTF-8是unicode的一种实现方式,实现了unicode的存储,同时与ASCII兼容。
unicode只规定了每个字符对应的id,并没有规定字符应该如何存储。
4、GB2312
兼容ASCII编码的汉字编码表,包含了常用的汉字的编码(也就是说,没有包含所有的汉字)
下面做个试验。打开记事本,分别用ASCII、unicode、UTF-8的方式保存"你a"这两个字。
用16进制方式打开,可以看到存储的字节:
ASCII: C4 E3 61
unicode:FF FE 60 4F 61 00
UTF-8:EF BB BF E4 BD A0 61
"a"的ASCII值为0x61
从unicode编码表可以查到"你"对应的值为0x4F 0x60
而从http://www.knowsky.com/resource/gb2312tbl.htm中的GB2312表中,我们可以查到"你"对应的值为0xC4 0xE3
刚好与上面贴出的存储字节相对应。
另外一点,记事本所谓的保存方式,在我看来,是很不严谨的。
unicode只是规定了字符的映射关系,并没有规定字符该如何存储,记事本里用某种实现方式来代表unicode。
ASCII也只是规定了英文字符的映射(存储)方式,并没有规定汉字该如何存储,记事本里用GB2312(也许是?)
来代表ASCII。
这些很容易给人带来误导。
搜索了一些资料,算是搞清了ASCII、unicode、UTF-8的关系了。
1、ASCII
ASCII是很久之前美国制定的一套字符编码,是英文字符到某个id的一个映射。
这个编码方式用一个字节来表示英文字符,但字节的最高位固定为0,可用字节位数为7位。
也就是说,ASCII最多只能表示2^7 = 128个字符
2、unicode
单单ASCII肯定是不够用的,毕竟世界上有那么多国家,不同国家之间很多都使用不同的语言。
在没有unicode的时候,各个国家自己可能都有一套编码方式,这对交流带来很大的不便。
为了统一,就出现了unicode。
简单来讲,unicode的目的就是为世界上的字符制定一个从字符到独一无二的id的映射。
可以从http://www.unicode.org/Public/UCD/latest/charts/这个网站下载unicode的编码表。
3、UTF-8
UTF-8是unicode的一种实现方式,实现了unicode的存储,同时与ASCII兼容。
unicode只规定了每个字符对应的id,并没有规定字符应该如何存储。
4、GB2312
兼容ASCII编码的汉字编码表,包含了常用的汉字的编码(也就是说,没有包含所有的汉字)
下面做个试验。打开记事本,分别用ASCII、unicode、UTF-8的方式保存"你a"这两个字。
用16进制方式打开,可以看到存储的字节:
ASCII: C4 E3 61
unicode:FF FE 60 4F 61 00
UTF-8:EF BB BF E4 BD A0 61
"a"的ASCII值为0x61
从unicode编码表可以查到"你"对应的值为0x4F 0x60
而从http://www.knowsky.com/resource/gb2312tbl.htm中的GB2312表中,我们可以查到"你"对应的值为0xC4 0xE3
刚好与上面贴出的存储字节相对应。
另外一点,记事本所谓的保存方式,在我看来,是很不严谨的。
unicode只是规定了字符的映射关系,并没有规定字符该如何存储,记事本里用某种实现方式来代表unicode。
ASCII也只是规定了英文字符的映射(存储)方式,并没有规定汉字该如何存储,记事本里用GB2312(也许是?)
来代表ASCII。
这些很容易给人带来误导。
相关文章推荐
- Linux 与 Windows 对UNICODE 的处理方式
- Unicode详细分析解释
- vbs中将GB2312转Unicode的代码
- 将编码从GB2312转成UTF-8的方法汇总(从前台、程序、数据库)
- 程序员趣味读物 谈谈Unicode编码
- 常用字符集编码详解(ASCII GB2312 GBK GB18030 unicode UTF-8)
- C#实现Json转Unicode的方法
- UTF-8、Unicode 标准化表单、BOM
- ASP UTF-8页面乱码+GB2312转UTF-8 +生成UTF-8格式的文件(编码)第1/2页
- ASP+FSO生成的网页文件默认编码格式以及转换成UTF-8编码方法
- php中json_encode UTF-8中文乱码的更好解决方法
- 浅谈Unicode与JavaScript的发展史
- JavaScript中字符串与Unicode编码互相转换的实现方法
- php utf-8转unicode的函数第1/2页
- utf-8编码引起js输出中文乱码的解决办法
- Shell脚本把文件从GBK转为UTF-8编码
- jq的get传参数在utf-8中乱码问题的解决php版
- php UTF-8、Unicode和BOM问题
- wampserver 编码设置
- Unicode再探