पायथन के documentation से हवाला देते हुए:
UTF-8 है कई सुविधाजनक गुण:
यह किसी भी यूनिकोड कोड बिंदु संभाल कर सकते हैं।
एक यूनिकोड स्ट्रिंग कोई एम्बेडेड शून्य बाइट्स वाले बाइट्स के एक स्ट्रिंग में बदल गया है। यह बाइट ऑर्डरिंग मुद्दों से बचाता है, और इसका मतलब है कि यूटीएफ -8 तारों को सी कार्यों जैसे स्ट्रैपी() द्वारा संसाधित किया जा सकता है और प्रोटोकॉल के माध्यम से भेजा जा सकता है जो शून्य बाइट्स को संभाल नहीं सकता है।
एएससीआईआईआई पाठ की एक स्ट्रिंग भी एक वैध यूटीएफ -8 पाठ है।
सभी ASCII ग्रंथों भी वैध UTF-8 ग्रंथों कर रहे हैं।
यह स्पष्ट करने के लिए, इस कंसोल सत्र की जाँच (UTF-8 ASCII का सुपरसेट है):
:
>>> s = 'test'
>>> s.encode('ascii') == s.encode('utf-8')
True
>>>
बहरहाल, UTF-8 एन्कोडिंग के साथ सभी स्ट्रिंग मान्य ASCII स्ट्रिंग है
>>> foreign_string = u"éâô"
>>> foreign_string.encode('utf-8')
'\xc3\xa9\xc3\xa2\xc3\xb4'
>>> foreign_string.encode('ascii') #This won't work, since it's invalid in ASCII encoding
Traceback (most recent call last):
File "<pyshell#9>", line 1, in <module>
foreign_string.encode('ascii')
UnicodeEncodeError: 'ascii' codec can't encode characters in position 0-2: ordinal not in range(128)
>>>
तो, chardet
अभी भी सही है। केवल अगर कोई ऐसा चरित्र है जो असीसी नहीं है, chardet
यह बताने में सक्षम होगा, यह एएससीआई एन्कोडेड नहीं है।
आशा है कि यह सरल स्पष्टीकरण मदद करता है!
'" foobar ".encode ('utf-8')' foobar' है। – georg