Unicode İnceleyici
Metni yapıştır → her code point için tablo. Hex, ondalık, UTF-8 byte, kategori. Görünmez karakterleri yakala.
Bu ne işe yarar?
"Bu string neden eşit karşılaştırmıyor?" "Bu kullanıcı adı neden boşken zaten alınmış olarak reddediliyor?" "Bu dosya adı neden shell'imi bozuyor?" Cevap neredeyse her zaman: byte'lar gözlerinin gördüğünü eşleştirmiyor. İki karakter aynı görünebilir ama farklı code point'ler olabilir (Latin "a" vs Kiril "а"); boşluk non-breaking space'leri, sıfır genişlik birleştiricileri veya sağdan sola override'ları gizleyebilir; bir emoji bir code point veya dört olabilir. Bu araç herhangi bir metni hex, ondalık, UTF-8 byte dizisi, kategori ve bilinen yerlerde adıyla bireysel Unicode code point'lerine ayrıştırır.
Ne zaman kullanılır
- "Aynı görünen ama eşit olmayan" string hatasını teşhis etme.
- Kopya-yapıştırılmış metnin içine gizlenen görünmez karakterler (sıfır-genişlik boşluk, BOM, RTL override) bulma.
- Sabit genişlikli bir sütunda saklamadan önce byte'lar - code point'ler - UTF-16 code unit'lar sayma.
- Hangi ZWJ dizisini kullandığını görmek için bir emojiyi inceleme.
- Alan adlarında veya kullanıcı adlarında homoglyph saldırılarını tespit etme.
- Bir hex dump için tam UTF-8 byte dizileri üretme.
Çıktıyı okuma
- Code point — soyut Unicode değeri,
U+XXXXyazılır. 1,1 milyon tane vardır; kullanımdaki en yüksek U+10FFFF'tir. - UTF-8 — bu code point'in modern dosyalarda nasıl byte olarak kodlandığı (her biri 1–4 byte).
- UTF-16 code unit'ları — JavaScript string'lerinin (
s.length) ve Java string'lerinin saydığı şey. U+FFFF üzerindeki bir code point (çoğu emoji) iki UTF-16 unit alır (bir surrogate çifti). - Kategori — Unicode'un genel kategori kısaltması: L=harf, N=sayı, P=noktalama, S=sembol, Z=ayırıcı, C=kontrol/biçim/özel.
Sık yapılan hatalar
- Uzunluk belirsizdir. "👨👩👧" 1 grapheme cluster, 5 code point, 11 UTF-16 unit ve 18 UTF-8 byte'a sahiptir — bir şeyin raporlayabileceği tüm "uzunluklar".
- Sıfır-genişlik birleştirici dizileri ile dizi seçicileri. Birçok emoji ZWJ dizisidir: aile, meslek, cilt tonu varyantları. Bir ZWJ'yi yeniden sıralamak veya temizlemek render edileni değiştirir.
- Normalleştirme önemlidir. "café" e+◌́ (NFD) veya é (NFC) olabilir. Aynı görünürler ama farklı byte'lardır; veritabanları ve karşılaştırma kodu aynı forma normalize etmelidir.
- Sağdan sola override'lar tehlikelidir. U+202E içeren bir dosya adı gösterim sırasını çevirebilir —
resutxt.exe'yi dosya tarayıcısındaresuexe.txtgibi gösterir. Phishing'de kullanılır. - Ad sütunu kısmidir. Gerçek bir Unicode veritabanı her code point için ad içerir; inceleyici sadece kontrol karakterleri ve adın en kullanışlı teşhis olduğu yaygın biçim/boşluk karakterleri için ad gönderir.
- Surrogate yarımları tek başına görünmemelidir. Çıktıda U+D800–U+DFFF görürsen, girdi bozuk bir UTF-16 string'idir (yalnız surrogate). Çoğu API bunu UTF-8'e kodlamayı reddedecektir.