Unicode normalizasyonu nedir?

Unicode, aynı görsel karakteri temsil etmenin birden fazla yolunu tanımlar. Örneğin, "é" karakteri tek bir önceden oluşturulmuş kod noktası (U+00E9) olarak veya "e" harfinin ardından birleştirici akut aksanı (U+0065 U+0301) olarak depolanabilir. Her ikisi de aynı şekilde işlenir ancak bayt bazında farklıdır; bu da string karşılaştırması, arama ve metin işlemede sorunlara neden olur.

Unicode normalizasyonu, metni kanonik bir temsile dönüştürerek eşdeğer stringlerin özdeş hale gelmesini sağlayan işlemdir. Unicode Standardı dört normalizasyon formunu tanımlar:

  • NFC (Kanonik Ayrıştırma, ardından Kanonik Bileşim): Önceden oluşturulmuş form; en kompakt, web ve çoğu işletim sisteminde yaygın olarak kullanılır.
  • NFD (Kanonik Ayrıştırma): Tamamen ayrıştırılmış form; her karakter temel harf artı birleştirici işaretlere bölünür.
  • NFKC (Uyumluluk Ayrıştırması, ardından Kanonik Bileşim): NFC gibi ancak uyumluluk karakterlerini (örn. ligatures, üst simgeler, tam genişlik varyantları) kanonik eşdeğerlerine katlar.
  • NFKD (Uyumluluk Ayrıştırması): NFD gibi ancak uyumluluk ayrıştırmasını da uygular.

Araç açıklaması

Bu araç, Unicode metni bir normalizasyon formundan diğerine normalleştirir. Kaynak ve hedef formları seçin, metninizi yapıştırın ve dönüştürülen çıktı anında görünür.

Özellikler

  • Dört normalizasyon formunun tümü: NFC, NFD, NFKC ve NFKD'yi hem kaynak hem de hedef olarak destekler.
  • Çift yönlü dönüştürme: Formların herhangi bir kombinasyonu arasında serbestçe geçiş yapın.
  • Gerçek zamanlı çıktı: Metin yazarken veya yapıştırırken anında normalleştirilir.
  • Herhangi bir Unicode betiğini işler: Latin, CJK, Arapça, Kiril ve diğer herhangi bir Unicode kodlu metinle çalışır.

Nasıl çalışır

Araç, seçilen hedef form ile standart JavaScript String.prototype.normalize() yöntemini uygular. Bu, Unicode Standard Annex #15'te tanımlanan Unicode normalizasyonunun tamamen spesifikasyona uygun bir uygulamasıdır.

Kullanım durumları

  • String karşılaştırma düzeltmeleri: Metni karşılaştırmadan veya indekslemeden önce normalleştirerek görsel olarak özdeş stringlerin doğru şekilde eşleşmesini sağlayın.
  • Arama ve veritabanı tutarlılığı: Kullanıcı girişini veritabanında depolamadan önce tek bir forma (tipik olarak NFC) standartlaştırarak yalnızca kodlamada farklılık gösteren yinelenen girişleri önleyin.
  • Uyumluluk katlanması: Ligatures, üst simgeler ve tam genişlik karakterlerini arama indeksleme veya doğal dil işleme için standart eşdeğerlerine daraltmak için NFKC kullanın.