साथ बाइट्स में एक UTF-8 तार का एक आकार मिलता है के बाद एक UTF-8 स्ट्रिंग इस तरह:मैं कैसे पायथन
mystring = "işğüı"
यह संभव अजगर के साथ बाइट्स में अपनी (स्मृति में) आकार पाने के लिए है (2.5)?
साथ बाइट्स में एक UTF-8 तार का एक आकार मिलता है के बाद एक UTF-8 स्ट्रिंग इस तरह:मैं कैसे पायथन
mystring = "işğüı"
यह संभव अजगर के साथ बाइट्स में अपनी (स्मृति में) आकार पाने के लिए है (2.5)?
मान लीजिए कि आप यूटीएफ -8 बाइट्स की संख्या (और अतिरिक्त बाइट्स जो पायथन को ऑब्जेक्ट को स्टोर करने की आवश्यकता नहीं है), यह किसी भी अन्य स्ट्रिंग की लंबाई के समान है। पायथन 2.x में एक स्ट्रिंग अक्षरक एन्कोडेड बाइट्स की एक स्ट्रिंग है, यूनिकोड वर्ण नहीं।
बाइट तार:
>>> mystring = "işğüı"
>>> print "length of {0} is {1}".format(repr(mystring), len(mystring))
length of 'i\xc5\x9f\xc4\x9f\xc3\xbc\xc4\xb1' is 9
यूनिकोड तार:
>>> myunicode = u"işğüı"
>>> print "length of {0} is {1}".format(repr(myunicode), len(myunicode))
length of u'i\u015f\u011f\xfc\u0131' is 5
यह यूनिकोड में अपने तार के सभी बनाए रखने के लिए अच्छा अभ्यास है, और केवल एनकोड जब बाहरी दुनिया से संपर्क है। इस मामले में, आप एन्कोडिंग के बाद आकार का पता लगाने के लिए len(myunicode.encode('utf-8'))
का उपयोग कर सकते हैं।
ठीक है, मुझे 9 मिलते हैं जब मैं 'लेन (mystring) ' – NullUserException
करता हूं तो मुझे 5 – NullUserException
प्राप्त करने की उम्मीद है यदि आप इसे यूनिकोड शाब्दिक में परिवर्तित करते हैं तो आपको 5' 'mystring = u" işğüı "' मिलता है। अन्यथा, यह 'i \ xc5 \ x9f \ xc4 \ x9f \ xc3 \ xbc \ xc4 \ xb1'' – aaronasterling