Unicode 跳脫編解碼
字元與 \uXXXX 跳脫雙向互轉;emoji 等補充平面字元正確拆成代理對,並列出每個字元的碼位、UTF-8 位元組與 UTF-16 單元。
結果\u4F60\u597D\u002C\u0020\uD83D\uDE00\u0020\u0041
| 字元 | 碼位 | UTF-8 位元組 | UTF-16 單元 |
|---|---|---|---|
| 你 | U+4F60 | 0xE4 0xBD 0xA0 | U+4F60 |
| 好 | U+597D | 0xE5 0xA5 0xBD | U+597D |
| , | U+002C | 0x2C | U+002C |
| U+0020 | 0x20 | U+0020 | |
| 😀 | U+1F600 | 0xF0 0x9F 0x98 0x80 | U+D83D |
| U+0020 | 0x20 | U+0020 | |
| A | U+0041 | 0x41 | U+0041 |
概念
每個字元都住在一個編號碼位上:A 是 U+0041,中是 U+4E2D。JavaScript 用 \uXXXX 跳脫寫法表示它們。坑在於:emoji 和罕用字住在前 65536 格之外,所以一個 emoji 不是一個 \uXXXX,而是一對,叫代理對——例如笑臉就變成 \uD83D\uDE00。本工具兩個平面都正確處理,並列出每個字元的碼位、UTF-8 位元組和 UTF-16 碼元。
描述與趣事
為什麼一個笑臉要占兩個跳脫?因為這套系統設計時覺得 65536 格無限夠用,而 emoji 是幾十年後才來的。工程師只好打補丁:保留 D800–DFFF 區間。高位代理後接低位代理,就代表一個超大字元。這個補丁太成功,現在誰也不敢拆。
歷史與由來
Unicode 聯盟於 1991 年 10 月發布第一版 Unicode 標準。2.0 版(1996 年 7 月)把容量擴到上百萬個碼位,並引入帶代理對的 UTF-16,由 Peter Hartke 等工程師與 Unicode 技術委員會主導——這就是今天 emoji 總是兩個跳脫的原因。
相關關鍵字
unicode 跳脫uxxxx 轉換代理對emoji unicode碼位
糾錯回饋
如果發現工具問題或有任何建議,歡迎透過信箱聯絡我們,我們會認真查看每一則回饋。
