我有一个韩语字符串编码为统一码,如u'정정'
。我如何知道需要多少字节来表示这个字符串?
我需要知道确切的字节数,因为我使用的是iOS推送通知字符串,而且它对有效负载的大小有限制。
len('정정')
不起作用,因为它返回的是字符数,而不是字节数。
发布于 2012-08-07 01:17:44
你需要知道你想用什么编码来测量你的字节大小:
>>> 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
您真的想复习一下Python Unicode HOWTO,以便充分理解unicode对象和它的字节编码之间的区别。
另一篇优秀的文章是Joel Spolsky写的The Absolute Minimum Every Software Developer Absolutely, Positively Must Know About Unicode and Character Sets (No Excuses!) ( Stack Overflow背后的人之一)。
发布于 2012-08-07 01:17:38
表示unicode
所需的字节数因使用的编码而异。
>>> s = u'정정'
>>> len(s)
2
>>> len(s.encode('UTF-8'))
6
>>> len(s.encode('UTF-16'))
6
>>> len(s.encode('UTF-32'))
12
如果您打算重用编码结果,我建议对其进行一次编码,然后提取其len
,并在以后重用已编码的结果。
发布于 2012-08-07 01:17:40
确保您使用的是正确的standard encoding。
如果不是这样,您可以始终使用decodedString = myString.decode('UTF-8')
(如果不是UTF-8,则将UTF-8替换为您可以在上一个链接中找到的正确编码字符串),以获取len(decodedString)
应返回正确数字的格式的字符串
https://stackoverflow.com/questions/11832824
复制相似问题