UTF-16究竟是怎么編碼的
1.
首先要注意的是,代理Surrogate是專屬于UTF-16編碼方式的一種機制,UTF-8和UTF-32是不用代理的。
如前文所述,為了讓UTF-16能繼續(xù)編碼基本平面后面的增補平面中的碼點值,于是擴展了UTF-16編碼方式。
具體的擴展方法就是為其增加了代理機制,用兩個對應于基本平面碼點(即BMP代理區(qū)中的碼點)的16位碼元來表示一個增補平面碼點,這兩個用來表示一個增補平面碼點的特殊16位碼元就被稱為“代理對”。
如果要用簡單的一句話來概括,就是——所有大于0xFFFF的碼點值(即增補平面碼點編號,范圍為0x10000~0x10FFFF,十進制為65536~1114111;注意,0xFFFF是十六位二進制數(shù)的最大值的十六進制表示)要編碼成UTF-16編碼方式的話,就必須使用代理機制(也就是用代理對來表示)。
2.