Inspector Unicode
Tempel teks → tabel per code point. Hex, desimal, byte UTF-8, kategori. Tangkap karakter tak terlihat.
Dibuat oleh JXXR1 · ♥ Jadi sponsor · ☕ Belikan saya kopi
Untuk apa ini?
"Kenapa string ini tidak compare equal?" "Kenapa username ini ditolak karena sudah dipakai padahal kelihatannya bebas?" "Kenapa nama file ini merusak shell saya?" Jawabannya hampir selalu: byte-nya tidak cocok dengan yang dilihat mata. Dua karakter bisa kelihatan identik tapi code point-nya berbeda (Latin "a" vs Cyrillic "а"); whitespace bisa menyembunyikan non-breaking space, zero-width joiner, atau right-to-left override; sebuah emoji bisa berupa satu code point atau empat. Tool ini mendekomposisi teks apa pun sampai ke code point Unicode individualnya, dengan hex, decimal, sequence byte UTF-8, kategori, dan nama jika diketahui.
Kapan digunakan
- Mendiagnosis bug string "kelihatan sama tapi tidak equal".
- Menemukan karakter invisible (zero-width space, BOM, RTL override) yang bersembunyi di teks yang di-copy-paste.
- Menghitung byte vs code point vs UTF-16 code unit sebelum menyimpan di kolom fixed-width.
- Memeriksa emoji untuk melihat ZWJ sequence mana yang dipakai.
- Mendeteksi serangan homoglyph di domain name atau username.
- Menghasilkan sequence byte UTF-8 yang tepat untuk hex dump.
Membaca output
- Code point — nilai Unicode abstrak, ditulis
U+XXXX. Ada 1,1 juta; yang tertinggi yang dipakai adalah U+10FFFF. - UTF-8 — bagaimana code point itu di-encode sebagai byte di file modern (1–4 byte masing-masing).
- UTF-16 code unit — yang dihitung string JavaScript (
s.length) dan string Java. Code point di atas U+FFFF (sebagian besar emoji) mengambil dua UTF-16 unit (surrogate pair). - Kategori — singkatan general category Unicode: L=letter, N=number, P=punctuation, S=symbol, Z=separator, C=control/format/private.
Kesalahan umum
- Length itu ambigu. "👨👩👧" punya 1 grapheme cluster, 5 code point, 11 UTF-16 unit, dan 18 byte UTF-8 — semua "length" yang mungkin dilaporkan sesuatu.
- Sequence zero-width joiner vs sequence selector. Banyak emoji adalah ZWJ sequence: keluarga, profesi, varian skin-tone. Mengubah urutan atau menghapus ZWJ mengubah apa yang dirender.
- Normalisasi itu penting. "café" bisa e+◌́ (NFD) atau é (NFC). Kelihatan identik tapi byte-nya berbeda; database dan kode perbandingan harus dinormalisasi ke bentuk yang sama.
- Right-to-left override itu berbahaya. Nama file yang berisi U+202E bisa membalik urutan tampilan — membuat
resutxt.exeterlihat sepertiresuexe.txtdi file browser. Dipakai dalam phishing. - Kolom name itu parsial. Database Unicode sungguhan punya nama untuk setiap code point; inspector ini hanya menyertakan nama untuk control character dan karakter format/whitespace umum di mana nama adalah diagnostik paling berguna.
- Surrogate halves seharusnya tidak muncul sendirian. Jika kamu melihat U+D800–U+DFFF di output, input-nya adalah string UTF-16 yang malformed (lone surrogate). Sebagian besar API akan menolak meng-encode itu ke UTF-8.