如何使用Python在Bytes中获取UTF-8字符串的大小

时间:2010-10-01 19:39:22

标签: python

拥有这样的UTF-8字符串:

mystring = "işğüı"

是否可以使用Python(2.5)以字节为单位获取其(内存中)大小?

1 个答案:

答案 0 :(得分:7)

假设您指的是UTF-8字节数(而不是Python存储对象所需的额外字节数),它与任何其他字符串的长度相同。 Python 2.x中的字符串文字是一串编码字节,而不是Unicode字符。

字节字符串:

>>> 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字符串:

>>> myunicode = u"işğüı"
>>> print "length of {0} is {1}".format(repr(myunicode), len(myunicode))
length of u'i\u015f\u011f\xfc\u0131' is 5

最好将所有字符串保存在Unicode中,并且只在与外界通信时进行编码。在这种情况下,您可以使用len(myunicode.encode('utf-8'))来查找编码后的大小。