在 iPhone 上進行字元碼查詢,意思是找出 Unicode 碼點——也就是唯一識別某個字元的 U+XXXX 標籤——適用於您在裝置上看到的任何符號、字母或表情符號。iPhone 鍵盤只顯示可見的字形與長按後的變體,但從不顯示底層的 U+ 值;因此想知道貼上的符號是 U+00E9 (é) 還是分解後的 U+0065 U+0301 (e + combining acute) 的使用者,沒有內建的路徑。實際可行的做法是使用瀏覽器版的Unicode 編碼/解碼器,它在 Safari 中於本機執行,接受您貼上或輸入的任何字元,並回傳 iPhone 剪貼簿實際包含的確切純量值序列。由於轉換發生在瀏覽器分頁本身,沒有任何資料被上傳,而相同的工作流程也能處理輔助平面表情符號、帶腔調的拉丁字母、CJK 字元,以及常藏在國旗、家庭與職業表情符號內部的不可見碼點(例如 U+200D)。

char code lookup on iphone
在 iPhone 上查詢字元碼:以 Safari 為核心的工作流程

為何 iOS 沒有原生顯示碼點

您 iPhone 上顯示的每個字元,背後都對應到 Unicode 表中的一個數字,但 iOS 軟體層從未將該數字暴露出來。螢幕鍵盤提供帶腔調字母、其他標點與表情符號變體選擇器的長按選單,然而這些選單中的每個項目本身仍是字元,而非數值。iOS 中沒有任何欄位、對話框或分享面板選項會回報「A」的 U+0041 或笑臉的 U+1F600。macOS 的字元檢視器包含一個「按鍵」欄位會印出碼點標籤,但 iOS 上的對應功能只停留在字形與其名稱。

這在實際除錯時很關鍵。一個檔名因為一個版本以 U+00E9 儲存、另一個版本以 U+0065 U+0301 儲存而無法相符,即使兩者顯示完全相同。搜尋因為一個零寬連字 (U+200D) 夾在兩個碼點之間而錯過某個表情符號,索引器將它們視為獨立的鍵。一個複製的符號讓游標前進一個位置而非零個位置,因為 U+200B 或 U+FEFF 一起被帶了進來。這些 bug 在 iPhone 鍵盤層級都看不到,而且必須把螢幕上的字元轉回其純量值才能診斷。

如何在 iPhone 上查詢字元碼

下列瀏覽器工作流程適用於執行 iOS 13 或以上版本的任何 iPhone,僅使用 Safari 與系統剪貼簿。

  1. 複製您想檢查的字元。在備忘錄、郵件、Safari 或任何 App 中長按字元並選擇「拷貝」。若要複製鍵盤上的表情符號,切換到表情符號鍵盤,找到符號後,點選並按住預測列即可複製。
  2. 開啟 Safari 並前往 Unicode 編碼/解碼器工具。
  3. 確認模式已設定為將文字編碼為碼點。第一個輸入欄位接受精確的 Unicode 字串,包括常藏在已複製文字內的零寬空格與連字等不可見字元。
  4. 點選輸入欄位內部,然後點選浮現在鍵盤上方的螢幕「貼上」按鈕。字元現在會以其在剪貼簿中的原始形式出現在欄位中。
  5. 點選「Convert」按鈕。輸出面板會為您輸入中的每個純量值填入一個 U+ 代號。輔助平面字元會保持為單一 U+XXXXXX 值,而不會被拆成兩個 surrogate 半字。
  6. 依序讀取代號,或在輸出區中點選並按住以選取並複製整個 U+ 序列到新的備忘錄、信件或訊息串中以供日後參考。

由於轉換在瀏覽器分頁中執行,iPhone 不會將字元傳送到遠端伺服器。相同路徑在 iOS 版 Chrome、iOS 版 Firefox 以及任何支援標準 JavaScript 字串處理的瀏覽器中皆可運作。

從真實的表情符號讀取 U+ 序列

要了解為何一個可見符號可能藏有多個碼點,最快的方法是在 iPhone 上對表情符號 👩‍💻 (女性技術人員) 進行編碼。將它貼到編碼欄位中並轉換,輸出面板將依下列確切順序顯示三個代號:

  • U+1F469 — WOMAN,基礎字元
  • U+200D — ZERO WIDTH JOINER,不可見的接合符
  • U+1F4BB — PERSONAL COMPUTER,將「女性」轉為「女性技術人員」的修飾符

這正是每次 iPhone 貼上、每次 iCloud 同步與每則文字訊息傳送實際攜帶的三代號序列。iPhone 將這三個純量值渲染為一張彩色圖片,是因為系統字體套用了 Unicode 表情符號呈現規則,但底層緩衝區存放的是三個獨立的數字。相同的結構也出現在家庭表情符號、大多數職業表情符號以及許多國旗組合中,因此這個範例同時可作為您在裝置上需要檢查的任何接合序列的範本。

以單一碼點為例,基本的拉丁字母 A 會編碼為 U+0041,笑臉表情符號 😀 則編碼為 U+1F600。編碼器會將每個基本字元填補為至少四位十六進位數字,因此單一 ASCII 字母總是顯示為 U+0041 而非 U+41。

反向操作:在 iPhone 上解碼 U+ 代號

同一工具也能從已記載的碼點重建文字。切換到解碼模式並貼上以空格、逗號或換行分隔的序列,例如 U+1F469 U+200D U+1F4BB。解碼器會驗證每個代號,拒絕任何超出有效純量範圍 U+0000 至 U+10FFFF 的內容,也會拒絕位於為 UTF-16 配對保留的排除區間 U+D800 至 U+DFFF 中的 surrogate 值。十六進位數字不區分大小寫,因此 U+1f600 與 U+1F600 都會被接受。

解碼器也理解在原始碼與主控台輸出中使用的 JavaScript 風格 \u{...} 標記法。一行輸出 \u{1F600} 的紀錄會解碼為笑臉表情符號,而包含 \u00E9 的設定檔會解碼為 é。大括號形式是輔助平面數值所必需,因為 JavaScript 中四位數的 \uXXXX 形式只能處理基本多語文平面。

如需兩種代號格式的精簡參考,請參閱U+XXXX 與 \u{} 標記法字元碼查詢速查表,其中概述了哪個前綴屬於哪個系統,以及各消費者預期使用哪種分隔符。

iPhone 上的碼點與 UTF-8 位元組

在 iPhone 上處理字元時,常見的混淆是把 Unicode 碼點與 UTF-8 位元組序列視為同一個數字。實際上並非如此。字元 é 的碼點為 U+00E9,是單一的抽象值,但其 UTF-8 表示法是兩個位元組 C3 A9。兩種形式都正確,端看接收端系統所期望的格式而定。

您持有的內容您需要的內容查看位置
iPhone 上的可見字元U+XXXX 碼點標籤Unicode 編碼/解碼器,編碼模式
文件中的碼點標籤可見字元Unicode 編碼/解碼器,解碼模式
必須以位元組形式傳輸的文字UTF-8 位元組序列UTF-8 編碼/解碼器
必須以百分比編碼 ASCII 形式傳輸的資料URL 編碼字串URL 解碼/百分比編碼工具

若網路協定、檔案格式或 API 合約指定的是位元組,則碼點標籤的抽象層級過高,此時 UTF-8 檢視才是重點。若問題在於某個字串包含哪些抽象字元,則碼點檢視才是事實來源。

iPhone 上的限制與工具不會告訴您的內容

對於任何 iPhone 工作流程而言,有三個界線值得注意。第一,編碼器將輸入上限設為 100,000 個碼點,以維持裝置上的渲染與複製流暢,因此非常長的貼上記錄應在編碼前先分割。第二,工具刻意不進行標準化。預組態的 é 與分解後的 e + combining acute 都會按原樣通過,這對診斷為何兩個字串不相符而言是正確的行為。第三,純量序列並不等同於字素簇。👩‍💻 範例輸出三個碼點,工具並未聲稱這三個代號構成單一使用者感知的簇,也不會以完整的 Unicode 分段演算法來切割輸入。

此工具也不會查詢字元名稱、字集、易混淆狀態或語言意義,亦不會驗證某個序列是否構成建議的表情符號。這些都是獨立於可逆純量轉換之外的 Unicode 屬性。驅動 JavaScript 之 String.fromCodePoint 的純量層級推理(記載於ECMAScript 規格中)與編碼器使用的模型相同:以碼點迭代、格式化為 U+ 十六進位,且絕不將輔助字元拆成 surrogate 半字。

對大多數 iPhone 使用者而言,這些限制恰到好處。任務是把螢幕上的內容轉換成全球計算世界用來指稱它的 U+ 值,並在手中已有的裝置上完成。Safari 中的一個瀏覽器分頁、剪貼簿的一次貼上,以及一次轉換點選,即是這兩個檢視之間最短的路徑。

如需深入了解,請參閱在 iPhone 上使用 ASCII 碼轉換器:在 Safari 中開啟。