拥有这样的UTF-8字符串:
mystring = "işğüı"
是否可以使用Python(2.5)以字节为单位获取其(内存中)大小?
答案 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'))
来查找编码后的大小。