Java UTF-16 編碼中的代理對
當處理具有超出UTF-16 中使用的16 位元代碼單元的範圍
什麼是代理對?
在 UTF-16 中,代理對是兩個代碼單元的組合,這兩個代碼單元一起表示單一代碼點。當一個字元無法以單一 16 位元代碼單元進行編碼時,其表示如下:
高代理項表示代碼點的前半部分,而低代理項表示代碼點的後半部。它們一起形成一個 32 位元代碼點。
編碼和解碼
將超過U FFFF 的代碼點編碼為代理對的過程如下:
從代碼點減去0x10000 即可得到高代理項值。
將高代理值右移 10 位。
將 U D800 加到高代理值,以獲得高代理程式碼單元。
取代碼點的剩餘 10 位元以獲得低代理值代理值。
將 U DC00 加到低代理值以獲得低代理代碼單位。
從代理程式對解碼碼點涉及相反的過程。
範例
考慮 Unicode 字元 U 10400,它表示特點 ? 。將此字元編碼為代理對:
從U 10400 中減去0x10000:0x400
將0x400 右移10 位元:0x4
將U D800 加到0x4:U D04x單元)
新增U DC00至0x3C0:U DC00(低代理代碼單元)
字元 U 10400 現在由代理程式對 U D804 U DC00 表示。
以上是Java UTF-16 編碼中的代理對是什麼?的詳細內容。更多資訊請關注PHP中文網其他相關文章!