unicode character set
为了不忘记以前看过的unicode规范。决定写此文章,以便于记忆。 UCS 4 byte1 首位为0, 2^7=128个group byte2 2^8=256个plane byte3 256 row byte4 256 cell group 0 plane0 为Basic Multilingual Plane (BMP). BMP去掉前面的两个字节 就等同于 UCS 2. Now Unicode 使用了17个plane, 一个 17*2^16个codepoint. 平面15 0xF0000 - 0xFFFFD 平面16 0x100000 - 0x10FFFD 这两个平面定义了大约2^17个码位,作为Private Use Area. PUA给大家自定义。 java里面的string是适用UTF16来表示的。 这里可以看出,BMP里面的字符码点小于2^16,完全可以使用两个字节表示。 BMP以外的字符如何来表示?BMP以外的字符的码点大于2^16,只能使用2个UTF16单位。 怎么区分BMP和BMP以外的字符?在BMP中,保留了0xE000 - 0xF8FF 0xD800-0xDFFF作为代理区。 使用代理区+一个UTF16单元,表示一个BMP以外的字符。 UTF8,16,32都是一种编码转换格式。 在java中,String使用UTF16编码格式。使用codepointAt