在 macOS 上,字元碼查詢意味著將每個可見字元對應到它的 Unicode 純量值——而一個基於瀏覽器的 Unicode 編碼器可以列出你貼上的任何文字中每個 U+ 值,無需安裝。內建的字元檢視器只會顯示單一選取字型的碼點,而 Unicode 十六進位輸入法鍵盤只能從十六進位碼插入字元,但兩者都無法快速揭露多重碼點表情符號、預組合附加符號,或充滿隱形字元的貼上字串背後的完整純量序列。專門的 Unicode 編碼器 / 解碼器 會以 Unicode 碼點而非 JavaScript UTF-16 程式碼單位來逐一處理字串,因此像 😀 這類輔助平面表情符號會保持完整的 U+1F600,而不是被拆成高低代理對。同一個工具接受加上前綴的 U+XXXX 或 JavaScript 風格的 \u{...} 語彙,並在每個語彙通過純量驗證後重建原始文字。一切都在瀏覽器中本機執行,輸入上限為 100,000 個碼點以維持響應速度,而 U+D800 到 U+DFFF 的代理值會直接被拒絕,因為它們代表的是 UTF-16 程式碼單位,而不是獨立字元。這種行為組合,正是讓瀏覽器路徑在 Mac 上處理字元碼工作時真正有用的原因。

macOS 字元碼工具一覽
macOS 已經內建兩種取得碼點的原生路徑。字元檢視器(編輯 → 表情符號與符號)會列出單一選取字型的四位數十六進位值,適用於單次查詢。Unicode 十六進位輸入法輸入來源則只能反向操作:按住 Option 並輸入四位十六進位數字即可插入字元。若用於診斷——「為什麼這個字串比對不相等?」或「我到底從那份 PDF 複製了什麼?」——兩者都不夠快,也無法將多重碼點表情符號、正規化配對,或隱藏的零寬度結合字元以可讀序列印出。瀏覽器工具正好補上這個缺口,無須在系統上安裝任何東西。
| Mac 上的方法 | 方向 | 輔助平面處理 | 讀取 U+XXXX 或 \u{} 語彙 | 可離線執行 |
|---|---|---|---|---|
| 字元檢視器 | 字元 → 碼點 | 顯示單一字型的純量十六進位值 | 否 | 是(系統應用程式) |
| Unicode 十六進位輸入法鍵盤 | 十六進位碼 → 字元 | 輸入五位十六進位數字時可輸入輔助平面值 | 否 | 是(系統輸入法) |
| 瀏覽器 Unicode 編碼器 / 解碼器 | 雙向 | 將輔助平面純量保持為單一 U+ 值 | 接受 U+XXXX 與 \u{...} | 是(本機瀏覽器頁面) |
若要在 Mac 上快速進行單一字元的抽查,字元檢視器已足夠。但若要批次檢查,或將文件片段轉回文字,瀏覽器工具就能發揮它的價值。
在瀏覽器中查詢 Mac 上的字元碼
任何近期版本的 macOS 瀏覽器都能在本機執行這個編碼器——不需終端機、不需 Homebrew,也不會跳出權限提示。Safari、Chrome、Firefox 或 Arc 都能同樣順暢運作,而且頁面絕不上傳輸入內容,因此貼上客戶資料、記錄檔摘錄或檔名都很安全。編碼方向會接收剪貼簿上的所有內容,包括隱形的空白字元與零寬度結合字元,並回傳一份乾淨的清單,可直接複製回去使用。
- 開啟 Safari 或其他現代瀏覽器,載入 Unicode 編碼器 / 解碼器。
- 選擇編碼方向,讓輸入區域接收原始文字而非 U+ 語彙。
- 從任何 macOS 應用程式——程式碼編輯器、Mail、終端機記錄或 Finder 檔名——複製要檢查的字串,逐字貼到輸入框中。
- 觸發轉換,讓每個 Unicode 純量以大寫 U+XXXX 語彙呈現。輔助平面字元會以五位或六位十六進位數字回傳,例如 U+1F600。
- 將產生的語彙清單複製回剪貼簿,或在螢幕上直接讀取,以找出隱形字元、雜亂的控制位元組,或根本不應出現的代理字半段。
如果同一個 Mac 使用者之後需要從文件片段、十六進位傾印或程式碼審核註解中重建文字,解碼方向能以相同的驗證規則,單次處理加上前綴的 U+XXXX 與 JavaScript 風格的 \u{...} 語彙。
解讀 U+ 序列:數值所代表的意義
U+ 序列是字串在 Unicode 純量層級的診斷快照。基本拉丁字母會以四位數值回傳,例如「A」對應 U+0041。帶附加符號的字母會呈現出預組合形式與分解組合的差異——同一個視覺上的 é 可能是 U+00E9,也可能是 U+0065 U+0301 這一對,取決於來源。CJK 字元位於較高的平面,通常需要五位數,而輔助平面表情符號則落在五位或六位數的範圍。
| 輸入字元 | 輸出 U+ 值(典型) | 備註 |
|---|---|---|
| A | U+0041 | 基本拉丁字母,最少四位數 |
| é(預組合) | U+00E9 | 單一純量值 |
| é(分解) | U+0065 U+0301 | 兩個純量,視覺上與預組合形式相同 |
| 換行 | U+000A | 控制字元,明確包含 |
| 😀 | U+1F600 | 輔助平面純量值,保持為單一語彙 |
| 👩💻 | U+1F469 U+200D U+1F4BB | 女性 + ZWJ + 筆電,依 Unicode 標準為三個純量 |
由於編碼器以純量值逐一處理,😀 是單一語彙,而不是人為切開的 UTF-16 形式 U+D83D U+DE00。這個差異正是這個工具採用 String.fromCodePoint 語意而非舊式 char-code-at 行為的原因。U+D800 到 U+DFFF 的代理半段永遠不會出現,因為同一個排除範圍也適用於編碼器本來會產生的任何語彙。當 Mac 上的複製貼上比對一直失敗時,在字串中找到像 U+200D 這樣的語彙往往是遺漏的線索:零寬度結合字元藏在其中一個字串裡,肉眼看不見,但位元組中確實存在。
將 U+XXXX 與 \u{} 語彙解碼回文字
當輸入是文件而非即時文字時,工作流程的另一半就很重要。錯誤報告、記錄檔行與程式碼註解常以 U+2014 或 \u{2014} 引用字元,而 JavaScript 字串常值使用 \u{1F600} 表示輔助平面值。Unicode 編碼器 / 解碼器接受這兩種標記法,並在每個語彙通過純量驗證後重建原始文字。十六進位數字不區分大小寫,語彙可以放在同一行,以空白或逗號分隔,換行符也可作為分隔符。落在 U+0000 到 U+10FFFF 範圍之外,或位於代理範圍內的語彙會被拒絕,且不會插入任何替代字元——這個保證在格式錯誤的片段可能會在 Mac 終端機上變成一整排替代字型時特別有用。
若需要這些標記法更完整的語法說明,字元碼查詢速查表:U+XXXX 與 \u{} 語法 詳細說明前綴規則,以及輔助平面值所用的括號形式 \u{1F600}。速查表與主要編碼器共用相同的純量驗證邏輯,因此主工具在解碼模式接受的內容,與速查表所預測的完全一致。
當碼點仍不足以說明全貌時
字元碼查詢只回答一個狹隘的問題:這個字串包含哪些抽象字元。它無法回答通訊協定或檔案格式最終會問的位元組層級問題。U+00E9 識別的是 é;同一個字元的 UTF-8 表示是兩個位元組 C3 A9,而 UTF-16 表示則是兩個位元組 00 E9。 如果下游系統處理的是位元組而非碼點,請改用 UTF-8 編碼器 / 解碼器,將相同的輸入透過該流程處理。
正規化是另一個常見的意外。預組合的 U+00E9 與分解的 U+0065 U+0301 渲染結果相同,但比對時視為不同的序列;這個工具刻意不進行正規化,因此輸出會與貼上的來源逐位元組一致。這種精確性正好有助於診斷 Mac 上的搜尋、識別項、檔名或比對問題:答案會揭示字串中實際存在的內容,而不是應該存在的內容。
對於日常診斷,實用的步驟是:貼到瀏覽器工具中以了解純量序列,掃描字串中是否藏有 ZWJ 或控制字元,將 U+ 清單複製進工單或測試檔,僅在下一個較低層級重要時,才改用位元組層級的轉換器。