Hogyan lehet karakterkódolásokat felismerni a Python-ban

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_encoding

3. 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.

Lásd még:

 Magyar