Detektor Karakter Tak Terlihat

Cantumkan teks apa pun, dan detektor akan melaporkan setiap karakter tak terlihat yang terkandung di dalamnya: ruang lebar nol, tanda arah, BOM, garis hubung lunak, ruang pemutus, serta kumpulan kode kontrol Unicode yang tampak seperti ruang kosong namun mengganggu proses pencarian, pembandingan (diff), serta salin-tempel. Setiap temuan disertai dengan kodepoin-nya (U+200B), nama resmi Unicode-nya, serta posisinya dalam string, sehingga Anda dapat menentukan secara akurat lokasi bug yang menjadi masalah sebelum memperbaikinya.

Cara mendeteksi karakter tak terlihat

  1. 1

    Tempel teks

    Masukkan string yang mencurigakan, sepotong kode, pesan yang telah disalin, atau nilai konfigurasi.

  2. 2

    jalankan pemindaian

    Alat ini memeriksa setiap kode dan menandai kode mana pun yang sesuai dengan daftar karakter tak terlihat atau format tertentu.

  3. 3

    Periksa laporan tersebut

    Setiap hasil pencarian menampilkan posisinya (diberi indeks 1), kode titiknya dalam format `U+HHHH`, serta nama Unicode-nya (seperti spasi lebar nol, BOM, dll.).

  4. 4

    membersihkan teks

    Gunakan aksi penggantian untuk menghilangkan atau memvisualisasikan karakter tersembunyi, lalu tempelkan kembali versi yang telah disaring.

Karakter-karakter tak terlihat dan asal-usulnya

Karakter-karakter ini ada karena alasan yang sah (tata letak teks, arah penulisan aksara, atau penggabungan karakter). Namun, mereka menjadi masalah teknis ketika keluar dari konteks asalnya dan digunakan dalam kode, konfigurasi, kueri pencarian, atau nama pengguna.

Karakter yang dicari oleh detektor

Codepoint Nama Di mana biasanya muncul secara diam-diam
U+200B Ruang lebar nol Editor teks kaya, pemroses kata
U+200C Non-Joiner Lebar Nol Tipografi Persia dan Hindi
U+200D Penghubung Lebar Nol Urutan emoji, aksara India (Indic)
U+200E Tanda kiri-ke-kanan Teks yang mencakup skrip LTR dan RTL
U+200F Tanda dari kanan ke kiri Sama
U+202A..E Penyisipan / penggantian Sama; terkadang digunakan secara jahat (sumber Trojan)
U+2028 Pemisah Baris Dipindahkan dari Word; dapat mengganggu fungsi pengkode JSON
U+2029 Pemisah Paragraf Sama
U+FEFF Tanda Urutan Byte File disimpan dalam format UTF-8 dengan BOM di Notepad
U+00A0 Ruang kosong yang tidak terputus Ruang kosong tipografis dari Word
U+00AD Tanda hyphen lunak Petunjuk penggunaan tanda hyphen dalam teks kaya

Gejala umum dari bug karakter tersembunyi

  • Perbandingan string yang “seharusnya” sama ternyata tidak sama. Salin nilai-nilai tersebut ke alat ini dan periksa jumlah byte-nya.
  • Regex yang terlihat cocok secara visual, tetapi gagal saat dijalankan dalam kode. Sering kali berupa U+00A0 yang menyamar sebagai spasi.
  • Parser JSON mengalami crash saat menerima payload yang ditempel. Umumnya berupa BOM di awal, atau U+2028 dalam sebuah string literal yang ditolak JavaScript di dalam JSON.
  • Judul SEO memiliki panjang yang tidak tepat. Spasi lebar nol membuat panjang judul melebihi batas tanpa menimbulkan perubahan yang terlihat.

Sudut pandang Trojan Source

Karakter penggantian dua arah (U+202E, U+2066U+2069) dapat menyebabkan kode sumber ditampilkan dalam urutan tertentu namun dikompilasi dalam urutan yang berbeda, sebuah jenis serangan dari kelas “Trojan Source”. Jika Anda meninjau kode dari kontributor yang tidak terpercaya, jalankan perbandingan perubahan (diff) mereka menggunakan detektor ini sebelum melakukan penggabungan.

Pertanyaan yang Sering Diajukan

Notepad dan beberapa alat Windows versi lama secara default menggunakan format “UTF-8 dengan BOM”. BOM (U+FEFF) cukup cocok untuk aplikasi Windows, namun dapat menyebabkan masalah pada berbagai pipeline shell, file PHP (di mana BOM ditampilkan sebagai hasil eksekusi sebelum tag <?php), serta parser JSON.

Tampilannya seperti ruang biasa di layar, tetapi perilakunya berbeda: ruang ini tidak mendukung pemisahan baris dan tidak sesuai dengan sebagian besar varian regex \s dalam semua bahasa. Ruang ini sering muncul dalam jalur file, alamat email, serta nama pengguna yang ditransfer dari sumber teks lengkap.

Tidak selalu demikian. Dalam teks berbahasa Arab, Persia, atau Devanagari, penggunaan elemen penghubung lebar nol (zero-width joiner) maupun elemen yang tidak menghubungkan huruf (non-joiner) secara semantik wajib digunakan. Pada kode, konfigurasi, dan sebagian besar teks berbahasa Inggris, penghapusan elemen tersebut dapat dilakukan secara bebas. Namun, untuk konten berbahasa alami, gunakan alat deteksi untuk memeriksa terlebih dahulu sebelum melakukan penghapusan.

Tidak, analisis hanya dilakukan untuk permintaan saat ini, dan tidak ada apa pun yang Anda tempelkan yang disimpan atau dicatat setelah respons dibuat.

Alat Terkait

Alat ini tersedia dalam bahasa lain