Hogyan lehet karakterkódolásokat felismerni a Python-ban
Aspose.HTML FOSS for Python a nyers bájtokból a szabványok által előírt módon észleli a karakterkódolásokat: először a bájtnyomatokat, majd a tartalomban megadott deklarációkat. Ez az útmutató átvizsgál egy bájtsorozatot és normalizálja a kódoláscímkéket, a telepítéshez pip-et használva.
Lépésről lépésre útmutató
1. lépés: A csomag telepítése
git clone https://github.com/aspose-html-foss/Aspose.HTML-FOSS-for-Python.git
cd Aspose.HTML-FOSS-for-Python
pip install -e .2. lépés: A szükséges függvények importálása
from aspose_html.encoding.detection import detect_encoding3. lépés: A bájtsorozat kódolásának felismerése
A UTF-8 BOM bizonyos biztonsággal észlelhető, és a BOM bájtok eltávolításra kerülnek a dekódolt szövegből:
result = detect_encoding(b"\xef\xbb\xbf<p>x</p>")
print(result.encoding)
print(result.confidence)
print(result.text)4. lépés: Kódoláscímkék normalizálása
Az örökölt címkék a kanonikus nevekhez vannak rendelve — latin1, iso-8859-1 és us-ascii mind windows-1252 a kódolási szabvány szerint. Használd a get_canonical_name()-t ugyanabból a modulcsaládból a címkék normalizálásához az összehasonlítások előtt.
Általános problémák és megoldások
A BOM megjelenik a dekódolt szövegemben. Ez manuális dekódolásnál fordul elő; detect_encoding() eltávolítja a BOM bájtokat a result.text.
A kódolás-összehasonlítások sikertelenek az ekvivalens címkéknél. Hasonlítsa össze a kanonikus neveket, ne a nyers címkéket — normalizálja mindkét oldalt a get_canonical_name().
Egy egzotikus kódolás hibát okoz. A regiszteren kívüli kódolások a tipizált UnsupportedEncodingError; kezelje, és ha lehetséges, kódolja újra felfelé.
Gyakran Ismételt Kérdések
Mit ad vissza a detect_encoding?
Egy EncodingDetectionResult a felismert encoding, egy confidence szint és a dekódolt text.
A detektálás figyelembe veszi a meta címkéket?
Igen — a szabványos meta-elővizsgálat részt vesz a prescan_meta_charset() segítségével, ha nincs BOM.
Manuálisan dekódolhatok, ha már tudom a kódolást?
Igen — a decode_bytes() a kiválasztott kódolással dekódol.