编码-Unicode、CodePage、ASCII和其它
来源:互联网 发布:qq三国全服第一js鱼总 编辑:程序博客网 时间:2024/06/01 10:18
Joel Sposkley的这篇文章,https://www.joelonsoftware.com/2003/10/08/the-absolute-minimum-every-software-developer-absolutely-positively-must-know-about-unicode-and-character-sets-no-excuses/ , 谈了字符和编码,如果你对unicode、code page、ASCII这些不是很明白,值得一读。
我在这里做点记录:code point就是字符对应的数字,属于定义的范畴;encoding就是怎么表示数字的问题,属于表示的范畴。一个code point,如122,可以有多个表示,可以用ASCII,可以用UTF-7,还可以是UTF-8或者UTF-16,还可以是你自己的编码规则。
提一个问题:那我们说ASCII码的时候究竟是encoding还是code point呢?是encoding,对应的code point是0至127的数字。用7位就够了,计算机的byte大部分是8bits的,有一位浪费了,所以大家都想把高128个code point利用起来,因为语言的不同,各国对高128位的定义是不同的,结果就是各种不同的code page,不同的Code Page,表明高128字符不一样。
关于UNICODE。Unicode只有唯一的code point表,需要注意的是UCS-2和UTF-16不同的。UCS-2最多表示65536个字符,不够;UTF-16和UTF-8一样长度是可变的,一个16 bits不够的时候就用两个,是用来补漏的。目前UNICODE只涉及到17个板块,每块最多65536个字符。UTF-16完全可以表示。Windows最早只支持UCS-2,后来在Windows 2000中完全支持UTF-16。
最后重提一下原文中最重要的一点:There Ain’t No Such Thing As Plain Text.(光给一串字节不给编码都是耍流氓)
参考:
https://en.wikipedia.org/wiki/Unicode
https://en.wikipedia.org/wiki/UTF-16
https://en.wikipedia.org/wiki/Unicode_in_Microsoft_Windows
- 编码-Unicode、CodePage、ASCII和其它
- 编码介绍 ASCII与Unicode, codepage, utf-8
- ASCII和Unicode编码
- ASCII编码 和 UNICODE编码
- ASCII编码和Unicode编码
- ASCII和Unicode编码详解
- ASCII和unicode编码区别
- ASCII编码和UNICODE、utf-8编码
- ASCII编码和UNICODE编码转换
- 字符编码:ASCII,Unicode和UTF-8
- 字符编码:ASCII,Unicode和UTF-8
- 字符编码:ASCII,Unicode和UTF-8
- 字符编码:ASCII,Unicode和UTF-8
- 字符编码:ASCII,Unicode和UTF-8
- 字符编码:ASCII,Unicode和UTF-8
- 字符编码ASCII,Unicode和UTF-8
- 字符编码:ASCII,Unicode和UTF-8
- 字符编码:ASCII,Unicode和UTF-8
- 前端资源收集
- Hive 窗口函数、分析函数
- charindex()的用法
- 有毒的蘑菇-基于规则学习(独立而治之算法)
- Rsa非对称加密
- 编码-Unicode、CodePage、ASCII和其它
- SFTP服务搭建
- 进程地址空间,堆和栈关系
- mob短线简单验证,具体逻辑在添加
- ':app:mockableAndroidJar' clean 出错
- 新版本Butterknife的使用
- Coco2d-x Framebuffer笔记
- Android vold进程二 VolumeManager和CommandListener简介
- TTEFS-基于LayerFsd的文档透明加密SDK