目前看来,为了让UTF-8字符显示在门户消息中,您需要首先对它们进行解码。
下面是我代码中的一个片段:
self.context.plone_utils.addPortalMessage(_(u'This document (%s) has already been uploaded.' % (doc_obj.Title().decode('utf-8'))))
如果Plone中的标题已经编码了utf-8,那么字符串就是unicode字符串,下划线函数是由i18ndude处理的,我看不出为什么我们特别需要解码UTF-8。通常,我忘记添加它,并记住一旦我得到一个UnicodeError。
有什么想法吗?这是addPortalMessage的预期行为吗?是i18ndude引起了这个问题吗?
发布于 2014-07-09 19:53:51
UTF-8是Unicode的表示,不是Unicode,也不是Python字符串。在Python中,我们通过编码/解码在Python的unicode字符串和unicode的表示之间来回转换。
通过utf8string.decode(' UTF-8 ')解码utf-8字符串会产生一个Python字符串,该字符串可以与其他unicode字符串连接。
如果需要,Python将通过使用ASCII解码器自动将字符串转换为unicode。如果字符串中有非ASCII字符,这将失败--例如,它是用UTF-8编码的。
https://stackoverflow.com/questions/24659031
复制相似问题