密码至少8个字符举例( 二 )


1)字符集是字符集的简称 , 即字符集 。
2)编码是字符集编码的简称 , 即字符集编码 。
从上图可以清楚地看出 , 
1、编码是依赖于字符集的 , 就像代码中的接口实现依赖于接口一样;
2、一个字符集可以有多个编码实现 , 就像一个接口可以有多个实现类一样 。
为什么unicode这么特别?
想出一个新的字符集标准就是旧字符集字符不够用 。
unicode旨在统一所有字符集 , 包括所有字符 , 因此没有必要编辑新的字符集 。
但是如果你觉得它现有的编码方案不是很好呢?在没有新字符集的情况下 , 我们只能在编码上做文章 , 所以实现很多 , 从而打破了传统的一一对应 。
从上图可以看出 , 由于历史原因 , 你也会看到unicode和utf-8在很多地方混在一起 。这种情况下的unicode通常是utf-16或更早的ucs-2编码 。
关于unicode , 我们已经谈了很多 。出于各种原因 , 必须承认 , “unicode”一词在不同的语境中有不同的含义 。它可能指:
1)unicode标准
2)unicode字符集
3)unicode的抽象编码(编号) , 也即码点( codepoint)
4)unicode的一个具体编码实现 , 通常即为变长的 utf-16 , 又或者是更早期的定长 16 位的 ucs-2 。
在重点介绍下 utf-16 编码,utf-16将unicode字符集的代码点映射成一个16位整数序列(即长度为2字节的符号) , 用于数据存储或传输 。unicode字符的代码点需要用一个或两个16位符号来表示 , 所以这是一种可变长度的表示 。
utf-16可视为ucs-2的父集 。utf-16和ucs-2在没有辅助平面字符之前的意思是一样的(基本思想是用两个16位代码表示一个字符 , 只针对65535以上的字符) 。引入辅助平面字符后 , 称为utf-16 。
现在 , 如果某些软件声称支持ucs-2编码 , 实际上意味着它不能支持utf-16中超过2字节的字符集 。对于小于0x10000的ucs码 , utf-16编码等于ucs码 。
为什么要重点介绍 utf-16 编码 , 因为 java的内码使用的是 utf-16 编码 , 也就是我们常说的 unicode编码 。
没想到这么长 , 只是介绍了字符集和编码的区别 。看来有必要分两篇回答前一篇留下的问题 。这篇文章的总结其实就是两句话:
编码字符集里的每一个字符规定的顺序 , 叫码点(codepoint) , 而这个字符在编码字符集里的序号 , 在给定的编码方式下的二进制序列叫码元(codeunit) 。
【密码至少8个字符举例】在爪哇 , 我们与外码 , 即程序与外部交互时外部使用的字符编码,有更多的接触 , 但你不知道更多 。我们期待下一期进入java的编码 , 比较终回答上面提到的问题 。