Çok sayıda unicode karakter boyunca, ikiden fazla 'f' karakteri için U + FB00 bağlacı ff gibi birden fazla karakteri temsil eden bazıları vardır. Bu gibi karakterleri birden fazla tek karaktere dönüştürmenin kolay yolu var mı? Tercihen standart Java API'sinde mevcut bir şey var, ancak gerekirse bir dış kütüphaneye başvurabilirim.Unicode bitişik karakterleri ayırma
cevap
U + FB00 bir uyumluluk niteliğindedir. Normalde Unicode, bitişik ligatürler için ayrı bir kod noktasını desteklemez (bir bağın kullanılmasının gerekip gerekmediği ve bir verinin ne zaman saklanacağını belirleyen bir mizanpaj kararı olduğunu iddia eder). Eski kodlamalar ile birkaç birkaç, , ayrı varlıklar olarak ligatürleri temsil etmesine izin vermek için mevcuttur.
Neyse ki, bağ temsil karakterler bilgileri Unicode data file ve en yetenekli string işleme sistemlerinde mevcut veriler yerleşik olduğunu olması. Java'da
, sen the Normalizer
class kullanmanız gerekir ve NFKC
formu:
String ff ="\uFB00";
String normalized = Normalizer.normalize(ff, Form.NFKC);
System.out.println(ff + " = " + normalized);
Bu
ff = ff
Awesome! Teşekkürler! – nonoitall
@nonoitall: NFKD, her derde deva değil: bol miktarda ligatür ve diğer kombine formlar var. ** sadece çalışmaz. ** Örneğin, * ß * veya * ẞ * 'yı * SS * (hatta bir kasiyer bile var!), Ya da * Æ * * AE * ya da * æ * ila * ae * ya da * O * * OE * ya da * œ * ila * oe *. * Ð * veya * đ * değerini * o * içine * d * veya * ø * şeklinde çevirmek de işe yaramaz. ** hepsi ** için bu şeyler, UCA (Unicode Harmanlama Algoritması), ** değil ** NFKD gerekir. NFD/NFKD'nin her ikisi de, eğer bu sizin için önemliyse, tekil tahrip edici can sıkıcı özelliklere sahiptir. – tchrist
@tchrist: Anlayışım, bahsettiğiniz bu ayrıştırmaların * yapılmaması gerektiğidir. Tipografik anlamda sadece basit birleştirme değil, farklı olarak kullanılan gerçek ayrı karakterler. ß *, gerektiğinde ss'ye ayrılabilir (örneğin, sadece ASCII'yi kaydedebiliyorsanız), ancak ** ** eşdeğeri değil. Diğer taraftan ff Ligatür * sadece * bir tipografik bağdır. –
java.text.Normalizer'u deneyebilirsiniz, ancak bu bağlantıların çalışıp çalışmadığından emin değilim.
Bu bağlantı soruyu yanıtlayabilirken, cevabın temel kısımlarını buraya dahil etmek ve referans için bağlantı sağlamak daha iyidir. Bağlantılı sayfa değiştiğinde yalnızca bağlantı yanıtları geçersiz olabilir. - [Yorum yazıla] (/ review/düşük kaliteli yazılar/18866472) – pirho
Eğer Normalleştirme denir bahsediyoruz ve belirtilen süreç yazdırır Unicode Normalization Forms teknik not. Bu işlemi uygulayan java.text.Normalizer
adlı Java SE sınıf kitaplığında bir sınıf var. Ancak, istediğiniz sonucu elde etmek için hangi "normalizasyon formları" nı kullanmanız gerektiğini öğrenmek için yukarıda bağlantılı Unicode belgesini okumalısınız. Bu basit değil ...
- 1. Resimden karakterleri segmentlere ayırma
- 2. Kaçınan unicode karakterleri unicode gösterimine dönüştürme
- 3. DocumentFilter.replace ile unicode karakterleri kullanarak
- 4. Firefox, bazı Unicode karakterleri ile
- 5. Birkaç küçük std :: vektörü için bitişik bellek ayırma?
- 6. Antlr gramerime nasıl unicode karakterleri koyarım?
- 7. PyPlot.jl'de, düzgün görüntülenecek unicode karakterleri nasıl alabilirim?
- 8. Android'de bir HttpPost'da unicode karakterleri nasıl gönderilir
- 9. Unicode ve Ascii karakterleri aynı mıdır?
- 10. numarasını bulun ve bu sayıya eşit bitişik karakterleri kaldırmak
- 11. Unicode
- 12. Gruplama Bitişik
- 13. Python'da yasa dışı xml unicode karakterleri filtrelemenin hızlı yolu?
- 14. Java'da Unicode karakterleri dinamik olarak oluşturmak mümkün mü?
- 15. Vim: 8 basamaklı onaltılık kodlu Unicode karakterleri gir
- 16. Neden utf8.Validstring işlevi geçersiz unicode karakterleri tespit etmiyor?
- 17. Delphi 2009'daki metin dosyasından unicode karakterleri okuma
- 18. ASP - TextBox yalnızca karakterleri kabul eder [UniCode] - C#
- 19. Java dilinde bir dilin unicode karakterleri elde etme
- 20. URL'yi Enkodlam Nasıl Kullanılır PHP ile Unicode Karakterleri İçerir
- 21. HttpUtility.ParseQueryString() her zaman unicode için özel karakterleri kodlar
- 22. Sayfalara ayırma HTML belgesi
- 23. tüm karakterleri
- 24. Base64ing Unicode karakterler
- 25. Unicode olmayan XML gösterimi
- 26. MySQL unicode literals
- 27. unicode karakterleriyle pdf formu doldurun
- 28. Valgrind "yığın ayırma" diyor "yığın ayırma" diyorum
- 29. Sabit uzunluk ile ayırma dizgisi
- 30. Unicode metninin Romingleştirilmesi
Sorunuza * ligature * anahtar kelimesini ekleme özgürlüğünü kullandım. :) – deceze
Teşekkürler - Ne aradıklarından emin değildim. :-) – nonoitall
Temel birim için grafik değil mi? –