1. 程式人生 > >Unicode 是不是只有兩個字節,為什麽能表示超過 65536 個字符

Unicode 是不是只有兩個字節,為什麽能表示超過 65536 個字符

大致 info img html 一個 獲得 程序員 是不是 .com

Unicode 目前規劃的總空間是17個平面(平面0至16),0x0000 至 0x10FFFF。每個平面有 65536 個碼點。
你只是大致知道平面0(「Basic Multilingual Plane」,即「BMP」)的 65536 個碼點(即 0x0000 至 0xFFFF)如何編碼,這不是 Unicode 的全部。
  • BMP 的字符是 Unicode 中最基礎和最常用的一部分,以 UTF-16 編碼時使用2字節,以 UTF-8 編碼時使用1至3字節。
  • 超出 BMP 的字符以 UTF-16 或 UTF-8 編碼都需要4字節。
  • 另外還有一個比較少用的編碼形式,UTF-32,它編碼任何 Unicode 字符都需要4個字節。

Unicode 的基礎是一個編號的字符集,在字符集之上又規定了模塊化的編碼等等技術層次,各種具體的編碼形式並不一致,你說的「Unicode 只有兩個字節」這句話根本不成立。



作者:梁海
鏈接:https://www.zhihu.com/question/22881537/answer/22947465
來源:知乎
著作權歸作者所有。商業轉載請聯系作者獲得授權,非商業轉載請註明出處。

--------------------------------------------------------------------------------------------------------

網上說的占兩個字節,一般是java程序員,char字符默認使用Unicode編碼的ucs-16be,一個char占據兩個字符,所以在char來表示大於65536時候,編譯期會報錯,如

技術分享圖片

那為什麽string又可以呢?https://www.cnblogs.com/crazylqy/p/10481785.html

Unicode 是不是只有兩個字節,為什麽能表示超過 65536 個字符