Python içinde Karakter Kodlamalarını Nasıl Algılayabilirsiniz

Python içinde Karakter Kodlamalarını Nasıl Algılayabilirsiniz

Aspose.HTML Python için FOSS, ham baytlardan karakter kodlamalarını standartların belirttiği şekilde algılar: önce bayt sırası işaretleri, ardından içerik içi bildirimler. Bu kılavuz bir bayt akışını tarar ve kodlama etiketlerini normalleştirir, kurulum için pip kullanır.

Adım Adım Kılavuz

Adım 1: Paketi Kurun

git clone https://github.com/aspose-html-foss/Aspose.HTML-FOSS-for-Python.git
cd Aspose.HTML-FOSS-for-Python
pip install -e .

Adım 2: Gerekli Fonksiyonları İçe Aktarın

from aspose_html.encoding.detection import detect_encoding

Adım 3: Bir Bayt Akışının Kodlamasını Algılayın

Belirli bir güvenle bir UTF-8 BOM algılanır ve BOM baytları çözümlenmiş metinden kaldırılır:

result = detect_encoding(b"\xef\xbb\xbf<p>x</p>")
print(result.encoding)
print(result.confidence)
print(result.text)

Adım 4: Kodlama Etiketlerini Normalleştir

Eski etiketler kanonik isimlere eşlenir — latin1, iso-8859-1 ve us-ascii kodlama standardına göre hepsi windows-1252. Karşılaştırmalardan önce etiketleri normalleştirmek için aynı modül ailesinden get_canonical_name() kullanın.

Yaygın Sorunlar ve Çözümler

Bir BOM, çözümlenmiş metnimde görünüyor. Bu, manuel kod çözme sırasında olur; detect_encoding() BOM baytlarını şuradan temizler result.text.

Kodlama karşılaştırmaları eşdeğer etiketler için başarısız olur. Kanonik adları karşılaştır, ham etiketleri değil — her iki tarafı şununla normalleştir get_canonical_name().

Egzotik bir kodlama bir hata üretir. Kayıt dışındaki kodlamalar tiplenmiş hatayı yükseltir UnsupportedEncodingError; bunu ele al ve mümkünse yukarı akışta yeniden kodla.

Sıkça Sorulan Sorular

detect_encoding ne döndürür?

Algılanan encoding ile bir EncodingDetectionResult, confidence seviyesinde ve çözülen text.

Algılama meta etiketlerine bakar mı?

Evet — BOM bulunmadığında standart meta-ön tarama prescan_meta_charset() aracılığıyla katılır.

Kodlamayı bildiğimde manuel olarak çözebilir miyim?

Evet — decode_bytes() seçilen bir kodlama ile çözer.

Ayrıca Bakınız

 Türkçe