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()은(는) 선택한 인코딩으로 디코딩합니다.