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

sys*_*out 8 python

有这样的UTF-8字符串:

mystring = "i??ü?"
Run Code Online (Sandbox Code Playgroud)

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

Jos*_*Lee 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
Run Code Online (Sandbox Code Playgroud)

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
Run Code Online (Sandbox Code Playgroud)

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

  • 这个答案是错误的。要正确计算字符串中的字节数(八位字节),您需要查看编码字符串,因为 utf8 字符范围为 1-4 个字节,请执行: `len(bytes(u'计算机', 'utf8')) # returns 9` NOT `len(u'计算机') # 返回 3` (4认同)