跳至主要內容

將易混淆字元正規化為安全文字

正規化易混淆字元,就是把每個仿冒字元替換成它所模仿的一般字元,讓看起來相同的兩個字串在比較時也相等。在比較使用者名稱、比對封鎖清單或去除重複識別碼之前,這一步特別有用。

實例解析

輸入
Cоnfig file: аdmin2, Noёl, café
偵測到的文字系統
拉丁字母 (Latn), 西里爾文字 (Cyrl)
已標記字元
7
位置字元碼位文字系統替換為規則
0CU+FF23拉丁字母CNFKC 正規化
1оU+043E西里爾文字o易混淆字元對照表
7fiU+FB01拉丁字母fiNFKC 正規化
10:U+FF1A一般文字:易混淆字元對照表
12аU+0430西里爾文字a易混淆字元對照表
172U+FF12一般文字2易混淆字元對照表
22ёU+0451西里爾文字ë易混淆字元對照表
保留可讀的 Unicode
Config file: admin2, Noël, café
嚴格的 ASCII 後備
Config file: admin2, Noel, café

運作原理

  • 首先依內建對照表替換已知的仿冒字元。對照表以外的字元則以 NFKC 正規化,把全形形式、合字與其他相容字元轉換成標準的對應字元。
  • 「保留可讀的 Unicode」會在對照表定義了帶重音字母時保留它,例如西里爾字母 ё → ë。「嚴格的 ASCII 後備」則改用一般 ASCII 字母(ё → e)。
  • 既不在對照表中、也不會被 NFKC 改變的字母會原樣保留,因此 café 在兩種模式下都保有重音。正規化後的文字只是比較用的鍵值,而非安全判定:請同時保存原文,並檢查被標記的字元。

轉換是盡力而為:映射的易混淆項和 NFKC 折疊是確定性的,但某些合法的 Unicode 不會被標記。

您的文字

貼上或鍵入 — 結果會在您鍵入時更新(對於長輸入會稍微去抖)。

已掃描 30 個字元
7 個可疑項目
嚴格的 ASCII 後備
轉換方式

嚴格 ASCII 模式積極以 ASCII 取代已知的相似字元。當字元位於捆綁地圖或 NFKC 折疊中時,它可以更改合法的非拉丁文本。

原文(可疑字元已標記)

原始視圖中的可疑字元帶有下劃線並標記為“可疑”。除了突出顏色。

suspicious character Csuspicious character оnfig suspicious character filesuspicious character : suspicious character аdminsuspicious character 2, Nosuspicious character ёl, café
清理後的輸出
字元分析
索引(從0開始)原字元替換為代碼點原因
0CCU+FF23NFKC normalization changed this character (compatibility or width folding).
1оoU+043ENon-ASCII confusable mapped to a safer Latin ASCII equivalent.
2nnU+006ENot flagged as a confusable or compatibility character.
3ffU+0066Not flagged as a confusable or compatibility character.
4iiU+0069Not flagged as a confusable or compatibility character.
5ggU+0067Not flagged as a confusable or compatibility character.
6 U+0020Not flagged as a confusable or compatibility character.
7fifiU+FB01NFKC normalization changed this character (compatibility or width folding).
8llU+006CNot flagged as a confusable or compatibility character.
9eeU+0065Not flagged as a confusable or compatibility character.
10::U+FF1ANon-ASCII confusable mapped to a safer Latin ASCII equivalent.
11 U+0020Not flagged as a confusable or compatibility character.
12аaU+0430Non-ASCII confusable mapped to a safer Latin ASCII equivalent.
13ddU+0064Not flagged as a confusable or compatibility character.
14mmU+006DNot flagged as a confusable or compatibility character.
15iiU+0069Not flagged as a confusable or compatibility character.
16nnU+006ENot flagged as a confusable or compatibility character.
1722U+FF12Non-ASCII confusable mapped to a safer Latin ASCII equivalent.
18,,U+002CNot flagged as a confusable or compatibility character.
19 U+0020Not flagged as a confusable or compatibility character.
20NNU+004ENot flagged as a confusable or compatibility character.
21ooU+006FNot flagged as a confusable or compatibility character.
22ёeU+0451Non-ASCII confusable mapped to a safer Latin ASCII equivalent.
23llU+006CNot flagged as a confusable or compatibility character.
24,,U+002CNot flagged as a confusable or compatibility character.
25 U+0020Not flagged as a confusable or compatibility character.
26ccU+0063Not flagged as a confusable or compatibility character.
27aaU+0061Not flagged as a confusable or compatibility character.
28ffU+0066Not flagged as a confusable or compatibility character.
29ééU+00E9Not flagged as a confusable or compatibility character.

更多指南