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

wal*_*pat 0 encoding plone utf-8

目前似乎为了在门户消息中显示UTF-8字符,您需要先解码它们.

以下是我的代码中的代码段:

self.context.plone_utils.addPortalMessage(_(u'This document (%s) has already been uploaded.' % (doc_obj.Title().decode('utf-8'))))
Run Code Online (Sandbox Code Playgroud)

如果Plone中的标题已经是UTF-8编码,则字符串是unicode字符串,而下划线函数由i18ndude处理,我没有看到我们特别需要解码utf-8的原因.通常我忘记添加它并记住一旦我得到UnicodeError.

有什么想法吗?这是addPortalMessage的预期行为吗?导致问题的是i18ndude吗?

Ste*_*veM 6

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

通过utf8string.decode('utf-8')解码UTF-8字符串会产生一个Python unicode字符串,该字符串可以与其他unicode字符串连接.

如果需要使用ASCII解码器,Python将自动将字符串转换为unicode.如果字符串中存在非ASCII字符,则会失败 - 例如,它以UTF-8编码.