的字节数。我怎么知道需要多少字节来表示这个字符串?找我有编码为Unicode像<code>u'정정'</code>韩国串需要一个Unicode字符串
我需要知道确切的字节数,因为我使用的字符串为iOS推送通知和它的有效载荷的大小有限制。
len('정정')
不起作用,因为它返回的字符数,而不是字节数。
的字节数。我怎么知道需要多少字节来表示这个字符串?找我有编码为Unicode像<code>u'정정'</code>韩国串需要一个Unicode字符串
我需要知道确切的字节数,因为我使用的字符串为iOS推送通知和它的有效载荷的大小有限制。
len('정정')
不起作用,因为它返回的字符数,而不是字节数。
你需要知道要衡量你的字节大小什么编码:
>>> 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对象,它的字节之间的区别编码。
另一个很好的文章,The Absolute Minimum Every Software Developer Absolutely, Positively Must Know About Unicode and Character Sets (No Excuses!),由Joel Spolsky的(后面的堆栈溢出的人之一)。
代表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
后来重用已编码的结果。
确保您使用的是正确的standard encoding。
如果你没有,你可以随时decodedString = myString.decode('UTF-8')
(替代UTF-8与正确的编码字符串,你可以从以前的链接发现,如果不是UTF-8),以获得该字符串的格式,其中len(decodedString)
应该返回适当数量
你是怎么知道这个字符是'\ uC815'的?这是什么编码?我确实尝试过utf-8/16/32,但没有一个是正确的,但'\ uC815'似乎正在工作。 – jasondinh 2012-08-06 17:21:58
我有一个名为UnicodeChecker的应用程序供我参考,但'C815'是unicode代码点。如果您知道UTF-8或UTF-16字节序列,则可以*解码*以获取Unicode字符(''\ xEC \ xA0 \ x95'.decode('UTF-8')')。 python提示符在这里很有帮助;例如,当向终端回显(而不是打印)unicode值时,python将使用它的'unicode_escape'编码。 – 2012-08-06 17:28:04
UTF-16编码的长度意味着包含了UTF-16 BOM。我不知道Python是否支持'encode('UTF-16BE')'来避免它。 – bames53 2012-08-06 18:53:49