SORU
28 EKİM 2011, Cuma


Tüm UTF-8 normalleştirilmiş nedir?

ICU project artık PHP library) sınıflar UTF-8 daha kolay arama yaparken değerleri karşılaştırma yapmak için dizeleri normale yardımcı olmak için gerekli içerir.

Ancak, uygulamalar için what this means anlamaya çalışıyorum. Hangi durumlarda istiyor muyum örneğin, "Kurallı Denklik" yerine "Uyumluluk denklik" veya vis-versa?

CEVAP
28 EKİM 2011, Cuma


Her şey Hiç Unicode Normalleştirme Bilmek İstedim

Kurallı Normalleştirme

Bazı Unicode karakterleri kodlamak için birden fazla yol, özellikle aksanlı karakterler içerir. Kurallı normalleştirme klasik kodlama formuna kod noktaları değiştirir. Sonuç kod noktaları orijinal olanlar aynı yazı veya işleme altyapısı böcek engelleme görünmelidir.

Kullanma Zamanı

Çünkü sonuçlar aynı görünür, her zaman güvenli için geçerli kurallı normalleşmesi için bir dize önce depolama veya görüntüleme, sürece sen-ebilmek tahammül sonucu değil bit için bit aynı giriş.

Kurallı normalleştirme 2 türü vardır: NFD ve NFC. İkisi bir kaybı olmadan bu iki form arasında dönüştürebilirsiniz anlamda eşdeğerdir. NFC altında iki dizeleri karşılaştırmak her zaman NFD altında karşılaştırılması aynı sonucu verecektir.

NFD

NFD karakterler tamamen genişledi. Bu hesaplamak için daha hızlı normalleştirme formu, ama daha fazla kod noktaları (yani daha fazla alanı kullanır) sonuçları.

Eğer sen zaten normalleştirilmiş değil iki dizeleri karşılaştırmak istiyorsanız, bu uyumluluk normalleştirme ihtiyacın olduğunu biliyorsun sürece tercih normalleştirme formu.

NFC

NFC birleşir NFD algoritma çalıştırdıktan sonra mümkün olduğunda puan kod. Bu biraz daha uzun sürer, ama daha kısa dizeleri olur.

Uyumluluk Normalleştirme

Unicode da gerçekten ait olmayan birçok karakter içerir, ama eski karakter kümesi kullanıldı. Bu Unicode karakter metin izin vermek için Unicode olarak işlenecek ayarlar ve kayıp olmadan geri dönüştürülmüş sonra bu ekledi.

Uyumluluk normalleştirme "gerçek" karakterleri ve de kurallı normalleştirme gerçekleştirir. karşılık gelen sıra için bu dönüştürür Uyumluluk normalleştirme sonuçları orijinalleri ile aynı görünmeyebilir.

Biçimlendirme bilgileri içeren karakterler olmayan olanlar ile değiştirilir. Örneğin karakter 9 dönüştürüldü. Diğerleri biçimlendirme farklılıkları dahil etme. Roma rakamı karakteri örneğin 3* *düzenli harflere dönüştürülür.

Bu dönüşüm yapıldıktan sonra belli ki, artık losslessly özgün karakter kümesini dönüştürmek mümkündür.

Kullanma zamanı

Unicode Konsorsiyumu ToUpperCase dönüştürme gibi uyumluluk normalleştirme düşündüğünü gösteriyor. Bazı durumlarda yararlı olabilir bir şeydir, ama sadece willy-nilly uygulamak gerekir.

Mükemmel bir durumda muhtemelen 9 arama maç isteyeyim beri bir arama motoru olurdu.

Muhtemelen yapmanız gereken tek şey kullanıcı için uygulama uyumluluk normalleştirme sonucu görüntülemek.

/NFKD NFKC

Uyumluluk normalleştirme formu iki formları NFKD ve NFKC geliyor. NFD ve C arasında aynı ilişki var

NFKC herhangi bir dize doğal olarak da NFC ve NFKD ve NFD için aynı. Böylece NFKD(x)=NFD(NFKC(x)) NFKC(x)=NFC(NFKD(x)), vb.

Sonuç

Şüpheniz varsa, kurallı normalleştirme ile gitmek. Uzay/hızı anlaşma, ilgili, veya ınter-işletim ile bir şey tarafından gerekli olan temel NFC veya NFD seçin.

Bunu Paylaş:
  • Google+
  • E-Posta
Etiketler:

YORUMLAR

SPONSOR VİDEO

Rastgele Yazarlar

  • MisterBrightside

    MisterBright

    24 Mart 2006
  • Mr_BrettHooge

    Mr_BrettHoog

    3 Ocak 2011
  • PlugResearch

    PlugResearch

    22 Mart 2006