Encoding addPortalMessage需要解码(';utf-8';)

Encoding addPortalMessage需要解码(';utf-8';),encoding,utf-8,plone,Encoding,Utf 8,Plone,目前看来,为了在门户消息中显示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

目前看来,为了在门户消息中显示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导致了这个问题吗?

UTF-8是Unicode的表示,而不是Unicode,也不是Python Unicode字符串。在Python中,我们通过编码/解码在Python的unicode字符串和unicode表示之间来回转换

通过utf8string对UTF-8字符串进行解码。解码('UTF-8')生成一个Python unicode字符串,该字符串可以与其他unicode字符串连接


如果需要,Python将使用ASCII解码器自动将字符串转换为unicode。如果字符串中有非ASCII字符,则该操作将失败——例如,它是用UTF-8编码的。

UTF-8是Unicode的表示,而不是Unicode,也不是Python Unicode字符串。在Python中,我们通过编码/解码在Python的unicode字符串和unicode表示之间来回转换

通过utf8string对UTF-8字符串进行解码。解码('UTF-8')生成一个Python unicode字符串,该字符串可以与其他unicode字符串连接


如果需要,Python将使用ASCII解码器自动将字符串转换为unicode。如果字符串中有非ASCII字符,则该操作将失败,因为,例如,它是用UTF-8编码的。

恐怕您理解Python如何处理字节字符串和Unicode的混合是这里的问题,在Plone中没有任何内容。我恐怕这是您理解Python如何处理字节字符串和Unicode混合的问题,而不是Plone中的任何内容。是的,这非常有意义!我会记住这一点,因为我处理了很多UTF-8字符串。是的,这很有意义!我会记住这一点,因为我处理了很多UTF-8字符串。