SORU
21 NİSAN 2009, Salı


Karakter Kodlaması Algılama Algoritması

Bir belge içindeki karakter kümeleri tespit etmek için arıyorum. Mozilla karakter tanıma uygulaması burada okuyorum:

Universal Charset Detection

Ayrıca bu jCharDet adlı bir Java uygulaması buldum:

JCharDet

Araştırmaya göre, her ikisi de statik veri kümesi kullanılarak gerçekleştirildi. Benim asıl merak ettiğim kimse herhangi bir diğer uygulaması kullanılmış olup bu yüzden ne olursa başarılı olur? Karakter kümesini algılamak için kullanılan algoritma ne oldu yani eğer kendi yaklaşım roll mü?

Herhangi bir yardım mutluluk duyacağız. Google ile mevcut yaklaşımlar, ne de Joel spolsky Serkan Utku Öztürk makale için bir bağlantı arıyorum - listesi için sadece netleştirmek için aramıyorum : )

GÜNCELLEME:Bu içine bir sürü araştırma yaptım ve bir çerçeve karakter tespiti için takılabilir bir yaklaşım kullanan cpdetector, bakın adlı bulma sona erdi:

CPDetector

Bu BOM, chardet (Mozilla yaklaşım) ve ASCII algılama eklentileri sağlar. Ayrıca çok kolay kendi yazmak için. Mozilla jchardet etc/yaklaşım o da çok iyi karakter algılamayı sağlayan bir çerçeve var...

ICU4J

Oldukça kolay bu çerçeve daha doğru bir karakter tanıma algoritması kodlama sağlamak için kullandığı cpdetector için kendi eklenti yazmak için. Mozilla yaklaşım daha iyi çalışır.

CEVAP
21 NİSAN 2009, Salı


Yıllar önce bir posta uygulaması için karakter kümesi tespit ettik, ve bizim kendi devirdi. Posta uygulaması aslında WAP uygulama, telefon UTF-8 bekleniyor. Bir kaç adım vardır:

Evrensel

Kolayca metin bayt üst bitleri özel bir bit deseni olarak UTF-8, 2/3/etc olsaydı tespit edebiliriz. Bir kez desen UTF-8 olduğuna emin olabilirsin belirli bir kaç kez tekrarlanan buldun.

Eğer dosyayı UTF-16 bayt sırası işareti ile başlıyorsa, muhtemelen metnin geri kalanı kodlama olduğunu varsayabilirsiniz. Aksi halde, tespit UTF-16 değil yaklaşık olarak kolay olarak UTF-8, sürece sen-ebilmek tespit çiftlerini desen: ama kullanımı çiftlerini çok nadir olsa da, bu yüzden o değil genellikle. UTF-32 algılamak için vekil çiftleri vardır hayır dışında benzer.

Bölgesel algılama

Bir sonraki okuyucu belirli bir bölgede olduğunu farz ediyoruz. Eğer kullanıcı UI Japonca lokalize görüştüğünü örneğin, eğer, o zaman üç ana Japon kodlamalar tespit deneyebiliriz. ISO-2022-JP tekrar kaçış dizileri ile tespit doğusundadır. Eğer bu başarısız olursa, EUC-JP ve Shift-JIS arasındaki farkı belirleyen olarak açık değildir. Bu daha büyük olasılıkla bir kullanıcı alması Shift-JIS metin, ama orada bir karakter EUC-JP, o hiç var olmamış Shift-JIS, ve tersi, yani bazen sen-ebil almak iyi bir maç.

Aynı prosedür Çin kodlamalar ve diğer bölgeler için kullanıldı.

Kullanıcı seçim

Eğer bunlar tatmin edici sonuçlar vermedi eğer doğru değilse, kullanıcı el ile bir kodlama seçin.

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

YORUMLAR

SPONSOR VİDEO

Rastgele Yazarlar

  • Dellbear816

    Dellbear816

    4 Mart 2008
  • Orson Wang

    Orson Wang

    28 EKİM 2006
  • Ralph Phillips

    Ralph Philli

    5 Aralık 2006