获取Unicode字符串所需的字节数

jas*_*inh 6 python string unicode cjk

我有一个韩文字符串编码为Unicode喜欢u'??'.我怎么知道代表这个字符串需要多少字节?

我需要知道确切的字节数,因为我正在使用字符串进行iOS推送通知,并且它对有效负载的大小有限制.

len('??') 不起作用,因为它返回字符数,而不是字节数.

Mar*_*ers 14

您需要知道要测量字节大小的编码:

>>> print u'\uC815\uC815'
??
>>> print len(u'\uC815\uC815')
2
>>> print len(u'\uC815\uC815'.encode('UTF-8'))
6
>>> print len(u'\uC815\uC815'.encode('UTF-16-LE'))
4
>>> print len(u'\uC815\uC815'.encode('UTF-16'))
6
>>> print len(u'\uC815\uC815'.encode('UTF-32-LE'))
8
>>> print len(u'\uC815\uC815'.encode('UTF-32'))
12
Run Code Online (Sandbox Code Playgroud)

您真的想要查看Python Unicode HOWTO以充分理解unicode对象与其字节编码之间的区别.

另一篇优秀的文章是Joel Spolsky(Stack Overflow背后的人之一)绝对必须知道关于Unicode和字符集(没有借口!)的绝对最低每个软件开发人员.

  • UTF-16编码的长度意味着包含UTF-16 BOM.我不知道Python是否支持`encode('UTF-16BE')`来避免它. (2认同)