एन्कोडिंग डिटेक्शन
एन्कोडिंग डिटेक्शन
HTML बाइट्स के रूप में आता है, और एन्कोडिंग लेयर किसी भी पाइपलाइन के पहले प्रश्न का उत्तर देती है: कौन सा एन्कोडिंग, और कौन सा टेक्स्ट? डिटेक्शन मानकों के अनुसार काम करता है — बाइट-ऑर्डर मार्क्स पहले, फिर कंटेंट में घोषणाएँ।
बाइट्स से पहचान
detect_encoding() बाइट स्ट्रीम को सुँघता है और एक EncodingDetectionResult लौटाता है जिसमें पता लगाया गया एन्कोडिंग, एक कॉन्फिडेंस लेवल, और डिकोड किया हुआ टेक्स्ट शामिल होता है। एक UTF-8 BOM निश्चित रूप से पहचानता है, और BOM बाइट्स डिकोडेड आउटपुट से हटाए जाते हैं:
from aspose_html.encoding.detection import detect_encoding
result = detect_encoding(b"\xef\xbb\xbf<p>x</p>")
print(result.encoding)
print(result.confidence)
print(result.text)डिटेक्शन टूलकिट
sniff_bom() केवल बाइट-ऑर्डर मार्क्स की जाँच करता है; prescan_meta_charset() दस्तावेज़ के भीतर charset घोषणाओं के लिए मानक मेटा-प्रिस्कैन लागू करता है; decode_bytes() एन्कोडिंग चुनने के बाद डिकोड करता है। असमर्थित एन्कोडिंग्स टाइप्ड UnsupportedEncodingError को उत्पन्न करती हैं।
कैनोनिकल नाम
एन्कोडिंग लेबल्स विभिन्न जगहों पर अलग-अलग होते हैं — latin1, iso-8859-1, और us-ascii सभी windows-1252 का अर्थ एन्कोडिंग मानक के अनुसार रखते हैं। get_canonical_name() किसी भी पंजीकृत लेबल को उसके मानक नाम में मैप करता है।
टिप्स और सर्वोत्तम प्रथाएँ
- BOM पर भरोसा करें: जब उपस्थित हो, यह निर्णायक होता है और डिटेक्टर निश्चित भरोसे के साथ रिपोर्ट करता है
- एन्कोडिंग की तुलना करने से पहले
get_canonical_name()के माध्यम से लेबल्स को सामान्यीकृत करें - बाइट्स को स्वयं फिर से डिकोड करने के बजाय डिटेक्शन से
result.textका उपयोग करें
सामान्य समस्याएँ
| समस्या | कारण | समाधान |
|---|---|---|
| BOM डिकोडेड टेक्स्ट में दिखाई देता है | मैनुअल डिकोड detect_encoding() के बजाय | डिटेक्शन result.text से BOM बाइट्स हटा देता है |
| लेबल तुलना विफल है | उपनाम बनाम आधिकारिक नाम में असमानता | सामान्यीकृत करें get_canonical_name() के साथ |
UnsupportedEncodingError उठाया गया | इनपुट एन्कोडिंग रजिस्ट्री के बाहर | टाइप्ड त्रुटि को संभालें; अपस्ट्रीम को पुनः एन्कोड करें |
FAQ
डिटेक्शन क्या लौटाता है?
एक EncodingDetectionResult जिसमें encoding, confidence, और डिकोड किया गया text है।
क्या लेगेसी लेबल्स को संभाला जाता है?
हाँ — उपनाम तालिका latin1 और us-ascii जैसे लेबल्स को उनके मानक एन्कोडिंग्स में मैप करती है।
क्या डिटेक्शन मेटा टैग पढ़ता है?
prescan_meta_charset() मानक meta-prescan को लागू करता है और डिटेक्शन में भाग लेता है।
API Reference सारांश
| क्लास/मेथड | विवरण |
|---|---|
detect_encoding | एन्कोडिंग का पता लगाएँ और बाइट्स को डिकोड करें |
EncodingDetectionResult | पता लगाने का परिणाम ऑब्जेक्ट |
sniff_bom | बाइट-ऑर्डर-मार्क निरीक्षण |
prescan_meta_charset | मानकों का मेटा-प्रीस्कैन |
decode_bytes | चुने हुए एन्कोडिंग के साथ डिकोड करें |
get_canonical_name | एक एन्कोडिंग लेबल को Canonicalize करें |