Python에서 문자 인코딩을 감지하는 방법

Python에서 문자 인코딩을 감지하는 방법

Aspose.HTML FOSS for Python는 표준이 규정한 대로 원시 바이트에서 문자 인코딩을 감지합니다: 먼저 바이트 순서 표시(Byte Order Mark)를 확인하고, 그 다음 콘텐츠 내 선언을 확인합니다. 이 가이드는 바이트 스트림을 검사하고 인코딩 레이블을 정규화하며, 설치는 pip를 사용합니다.

단계별 가이드

단계 1: 패키지 설치

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

단계 2: 필요한 함수 가져오기

from aspose_html.encoding.detection import detect_encoding

단계 3: 바이트 스트림의 인코딩 감지

특정 신뢰도로 UTF-8 BOM이 감지되며, BOM 바이트는 디코딩된 텍스트에서 제거됩니다:

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

4단계: 인코딩 라벨 정규화

레거시 라벨은 정규 이름에 매핑됩니다 — latin1, iso-8859-1, us-ascii는 모두 인코딩 표준에 따라 windows-1252입니다. 비교하기 전에 라벨을 정규화하려면 동일한 모듈 패밀리의 get_canonical_name()를 사용하십시오.

일반적인 문제 및 해결책

디코딩된 텍스트에 BOM이 나타납니다. 수동 디코딩 시에 발생합니다; detect_encoding() BOM 바이트를 제거합니다 result.text.

동등한 레이블에 대해 인코딩 비교가 실패합니다. 원시 레이블이 아닌 정규화된 이름을 비교하세요 — 양쪽을 다음으로 정규화합니다 get_canonical_name().

이상한 인코딩이 오류를 발생시킵니다. 레지스트리 외의 인코딩은 타입 오류를 발생시킵니다 UnsupportedEncodingError; 가능한 경우 이를 처리하고 상위에서 다시 인코딩하십시오.

자주 묻는 질문

detect_encoding 은(는) 무엇을 반환합니까?

감지된 encoding, confidence 수준, 그리고 디코딩된 text을(를) 가진 EncodingDetectionResult.

감지는 메타 태그를 확인합니까?

예 — BOM이 없을 때 prescan_meta_charset()을 통해 표준 메타 사전 스캔이 참여합니다.

인코딩을 알게 되면 수동으로 디코딩할 수 있나요?

예 — decode_bytes()은(는) 선택한 인코딩으로 디코딩합니다.

참조

 한국어