eine UTF-8-Zeichenfolge wie folgt zu haben:Wie erhalte ich eine Größe eines UTF-8-String in Bytes mit Python
mystring = "işğüı"
ist es möglich, seine (im Speicher) Größe in Bytes mit Python zu erhalten (2.5)?
eine UTF-8-Zeichenfolge wie folgt zu haben:Wie erhalte ich eine Größe eines UTF-8-String in Bytes mit Python
mystring = "işğüı"
ist es möglich, seine (im Speicher) Größe in Bytes mit Python zu erhalten (2.5)?
Angenommen, Sie meinen die Anzahl der UTF-8-Bytes (und nicht die zusätzlichen Bytes, die Python benötigt, um das Objekt zu speichern), so wie für jede andere Zeichenfolge. Ein String-Literal in Python 2.x ist eine Zeichenfolge codierter Bytes, keine Unicode-Zeichen.
Byte Strings:
>>> 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
Unicode-Strings:
>>> myunicode = u"işğüı"
>>> print "length of {0} is {1}".format(repr(myunicode), len(myunicode))
length of u'i\u015f\u011f\xfc\u0131' is 5
Es ist gute Praxis, alle Ihre Strings in Unicode zu halten und nur kodieren, wenn sie mit der Außenwelt zu kommunizieren. In diesem Fall könnten Sie len(myunicode.encode('utf-8'))
verwenden, um die Größe nach dem Codieren zu finden.
Nun, ich bekomme 9, wenn ich 'len (mystring)' – NullUserException
Ich erwarte zu 5 – NullUserException
Wenn Sie es in ein Unicode-Literal konvertieren, erhalten Sie 5 '' mystring = u "işğüı" '. Andernfalls wird es zu "i \ xc5 \ x9f \ xc4 \ x9f \ xc3 \ xbc \ xc4 \ xb1". – aaronasterling