Bir Instagram biyografisinden veya bir web sayfasından kopyalanıp bir form alanına yapıştırılan kısa bir başlık, genellikle gözle görülmeyen bir yolcuyla birlikte gelir: bölünemez boşluk (U+00A0) — normal boşlukla ekranda birebir aynı görünen, ama bilgisayar için tamamen farklı bir karakter.
Bu neden garip hatalara neden olur
En klasik örnek, ekrandaki metin aynı görünse bile beklenmedik şekilde "eşit değil" döndüren bir dize karşılaştırmasıdır. Neden genellikle bir dizenin normal bir boşluk, diğerinin ise başka bir kaynaktan kopyalanmış bölünemez bir boşluk içermesidir. Görsel olarak fark yoktur, bilgisayar için vardır — ve bu tür hatalar diff'te görünmediği için kod incelemesinden fark edilmeden geçer.
Kırpma (trim)
Trim, bir dizenin başındaki ve sonundaki boşluk karakterlerini kaldırır, aradaki içeriği değiştirmeden bırakır. Bu, standart bir kullanıcı girdisi temizleme işlemidir — bir form alanının başındaki yanlışlıkla eklenmiş fazladan bir boşluk, bir değerin karşılaştırılmasını veya doğrulanmasını etkilememelidir.
Boşlukları sıkıştırma
Bir diğer yaygın işlem, birden çok ardışık boşluk karakterini tek bir boşlukla değiştirmektir. Bu, örneğin bir PDF veya tablo gibi biçimlendirilmiş bir kaynaktan kopyalanan, tek bir boşluk yerine yanlışlıkla çift boşluk veya sekme olabilecek metin için kullanışlıdır.
Buna neden ihtiyaç duyulur
- Görünüşte aynı olan iki dizenin karşılaştırmasının neden başarısız olduğunu teşhis etmek.
- Başka bir kaynaktan kopyalanan bir metni, bölünemez boşluk gibi gereksiz ve görünmez karakterlerden temizlemek.
- Bir veritabanına kaydetmeden önce kullanıcı girdisini normalleştirmek.
Sıfır genişlikli karakterler
Görünür boşluk karakterlerine ek olarak sıfır genişlikli karakterler de vardır (zero-width space, zero-width joiner) — bunlar ekranda hiç yer kaplamaz, ama metinde ayrı karakterler olarak bulunurlar. Bu tür karakterler bazen bazı sitelerden veya mesajlaşma uygulamalarından kopyalarken metne karışır ve metin editöründe bile tamamen görünmez kalarak dize karşılaştırmasını veya aramayı fark edilmeden bozabilir.