Unicode 碼點是一個從 U+0000 到 U+10FFFF 的單一數字,用來識別一個抽象字元;而字元代碼查詢速查表則是將每個字元對應到其十六進位標籤並可反向對應的簡明參考。開發者最常看到的兩種標記法是 U+XXXX(Unicode 官方標準格式)以及 \uXXXX 或 \u{XXXXX}(JavaScript 風格的跳脫序列,大括號標記法保留給輔助平面的值使用)。基本字元至少需要四位十六進位數字,所以字母 A 會表示為 U+0041;而輔助字元則保留其完整數值,😀 會顯示為 U+1F600,而不是被拆成兩個 UTF-16 代理對。一份實用的速查表因此必須涵蓋代碼前綴、可接受的分隔符、代理排除區間 U+D800 到 U+DFFF,以及「一個可見字形(例如 👩💻)可能編碼為多個純量」的規則。本篇文章的其餘部分將整理出這份參考資料,並展示基於瀏覽器的 Unicode 編碼器 / 解碼器 如何在不將資料送往伺服器的情況下,驗證任何字串是否符合這些規則。

速查表:核心碼點格式
幾乎在每個程式碼庫、記錄檔或 Unicode 參考頁面中,都會出現三種標記法。它們彼此不可互換:每一種都有各自的前綴、可接受的分隔符集合,以及關於輔助值如何書寫的規則。記住這些差異是進行任何字元代碼查詢的第一步。
| 標記法 | 範例 | 出現位置 | 備註 |
|---|---|---|---|
| U+XXXX | U+0041 | Unicode 標準、碼表、文件 | 最少四位十六進位數字;十六進位字母可大寫或小寫 |
| \uXXXX | \u0041 | JavaScript、Java、C#、JSON 字串跳脫 | 恰好四位十六進位數字;代理半字在此很常見 |
| \u{XXXXX} | \u{1F600} | JavaScript 模板字面值、現代 ECMAScript | 一到六位十六進位數字;輔助值必須使用此形式 |
| HTML 數字實體 | 😀 | HTML 與 XML 文件 | 十進位或十六進位搭配 &#x...; 前綴;語法與 U+ 不同 |
U+ 前綴是出現在 Unicode 碼表 中的正式識別符,而大括號形式 \u{...} 是唯一能在單一代碼中承載五位或六位輔助值的 JavaScript 跳脫。HTML 實體使用另一套以十進位或十六進位搭配 & 號前綴為基礎的語法,因此屬於不同的參考頁面。
如何查詢字元代碼
無論你是在除錯複製來的字串、驗證文件,或是建立測試資料,以下的流程都適用。Unicode 編碼器 / 解碼器在本機端執行,因此貼上的文字絕不會離開瀏覽器。
- 選擇編碼方向,並貼上你想檢查的精確文字,包括不可見字元(例如零寬連接符、不中斷空格或尾端換行)。
- 執行轉換,並讀取輸出中的每個 U+ 代碼。每個代碼都是一個 Unicode 純量值,不一定對應到一個可見字元。
- 複製 U+ 序列以便用於文件、除錯筆記,或回填到測試案例中。基本字元至少以四位十六進位數字呈現,而輔助字元則保留其完整數值,而不是被拆成兩個代理半字。
- 若要反向操作,請切換到解碼模式,並輸入帶有前綴的代碼,例如 U+1F600、\u0041 或 \u{1F600}。代碼之間可以用空格、逗號或換行分隔。
- 在工具產生輸出之前,確認每個代碼都能解析為有效的純量——也就是 U+0000 到 U+10FFFF 之間、但排除 U+D800 到 U+DFFF 的值。代理半字、超出範圍的數字、缺少前綴,以及非十六進位字元會被拒絕,而不是被悄悄替換。
輸入大小上限為 100,000 個碼點,以便在捲動、複製與比對時維持結果面板的響應速度。這個上限足以涵蓋一般的除錯片段、記錄行與測試資料,但不包括完整檔案傾印——這類內容在貼上之前應該先進行分割或過濾。
輔助字元與代理間隙
Unicode 純量範圍從 U+0000 到 U+10FFFF,但區間 U+D800 到 U+DFFF 已被排除。這段 2,048 個值的範圍保留給 UTF-16 代理碼位使用,它們必須成對出現才能定址輔助平面。字元代碼查詢速查表必須標示這個排除區間,因為使用 \uD83D\uDE00 的舊式 JavaScript 程式碼會產生與 \u{1F600} 相同的字串,但只有後者才是乾淨的純量表示法。
| 範圍 | 平面或區塊 | 備註 |
|---|---|---|
| U+0000 到 U+007F | 基本拉丁文(ASCII) | 7 位元;在 UTF-8 中恆為單一位元組 |
| U+0080 到 U+00FF | 拉丁文-1 補充 | 包含位於 U+00E9 的預組態 é |
| U+0100 到 U+FFFF | 基本多文種平面 | 大多數現代文字都位於此區 |
| U+D800 到 U+DFFF | 代理(已排除) | 僅供 UTF-16 成對使用;絕非獨立純量 |
| U+10000 到 U+10FFFF | 輔助平面 | 包含位於 U+1F600 的 😀;在 JS 中需要使用大括號標記法 |
Unicode 編碼器 / 解碼器是逐一處理碼點而非 UTF-16 碼位,因此 😀 會呈現為單一代碼 U+1F600。解碼模式強制執行代理排除規則:單獨貼上 \uD800 會回傳錯誤,而不是替換字形。在比對字串時這項驗證很重要,因為一個落單的代理半字與其配對的另一個代理半字會解碼為相同的 UTF-16 結果,但其中只有一個是乾淨的純量表示法。
一個字形,多個碼點
碼點與使用者所感知的字元並不相同。女性與筆電的表情符號 👩💻 是序列 U+1F469、U+200D、U+1F4BB——一位女性、一個零寬連接符,以及一部筆電——工具會依序回報這三個代碼。家庭表情符號、膚色修飾符、區域指標符號旗幟、以 U+0065 U+0301 而非 U+00E9 表示的帶音拉丁字母形式,以及許多 CJK 字元,都遵循相同的多碼點模式。
正規化刻意不會自動執行:預組態形式 U+00E9 與分解形式 U+0065 U+0301 雖然都呈現為 é,但在逐位元組比較時並不相等。保留這種精確性,正是讓碼點檢查在診斷搜尋、識別碼、檔案名稱與相等性問題時如此有用的原因——這些情境中,兩個字串在畫面上看起來相同,卻無法通過精確比對。本頁顯示純量序列,並未聲稱能切割字素叢集,因此當問題涉及一個可見字元的起訖位置時,使用者仍需要具備字素感知的函式庫。
解碼與編碼:選擇方向
這份速查表適用於兩個方向,但流程有所不同。編碼模式回答「這個字串包含哪些抽象字元?」這個問題,當你從瀏覽器、資料庫或螢幕擷取畫面複製了一段文字,並需要確切知道其中包含什麼(包含控制字元與預設可忽略的碼點)時,這就是合適的工具。換行字元會編碼為 U+000A,而零寬連接符會明確顯示為 U+200D,這也解釋了游標的意外移動,或兩段貼上字串之間不可見的差異。
解碼模式則回答互補的問題「這串代碼代表什麼文字?」當文件、記錄輸出或原始碼已經提供了純量標籤時,這就是合適的工具。請保留每個代碼的前綴,並在相鄰的值之間加上分隔符——若沒有空格,U+0041U+0042 可能會被誤認為一個較長的十六進位數字,而不是兩個字元。十六進位字母大小寫均可,因此 U+0041 與 u+0041 會解碼為同一個字母。
碼點查詢的終點與位元組的起點
Unicode 碼點與 UTF-8 位元組並不可互換。U+00E9 識別的是字元 é,而其 UTF-8 表示則是兩個位元組 C3 A9。當通訊協定、檔案格式或線路格式需要位元組層級的編碼——例如 HTTP 標頭、JSON、原始檔案或資料庫欄位——時,真正重要的是位元組檢視。碼點檢視則作為字元身分的基準真相:它告訴你字串包含哪些抽象字元,而不是這些字元在磁碟上恰好如何被序列化。
其他表示法——HTML 實體、JSON \u 跳脫、URL 百分比編碼、Base64——都各自擁有其語法與規則。請將碼點檢查視為「字元是什麼」的權威參考,然後再選擇接收端系統所需的表示法來進行傳輸。本工具的輸出是診斷檢視,而非傳輸編碼;它不會查詢字元名稱、字體系統、易混淆狀態或語言意義,也不會驗證某個序列是否構成建議的表情符號或正字法叢集——這些都是可逆純量轉換之外的其他 Unicode 屬性。
一個記住這條界線的快速方法:碼點描述字元「是什麼」,而位元組描述字元「如何傳遞」。在除錯資料庫欄位、JSON 承載或檔案名稱時,請先決定接收端系統預期的是哪一種檢視,然後只在需要確認相關字元的抽象身分時,才對應回碼點層級。