[英]Plone site: How do I get special characters to display properly on my plone page?
我在內容類型的視圖類中有一個返回字典的函數。 字典包含從mysql后端數據庫檢索到的值(使用UTF-8編碼)。
其中一個字段包含一個特殊字符(與e組合),但呈現為“帶問號的鑽石”。
這是我在函數中返回的字典的構建方式:
assetDetails = Session.execute("CALL getAssetDetails("+self.assetID+");").fetchone()
return dict(assetID=assetDetails[0],
gpclAssetID=assetDetails[1],
assetType=assetDetails[2],
assetDescription=assetDetails[3],
supplierName=assetDetails[4],
model=assetDetails[5],
serialNumber=assetDetails[6],
status=assetDetails[7],
location=assetDetails[8],
options=assetDetails[9])
在我的模板文件中,html標記為:
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en"
xmlns:tal="http://xml.zope.org/namespaces/tal"
xmlns:metal="http://xml.zope.org/namespaces/metal"
xmlns:i18n="http://xml.zope.org/namespaces/i18n"
lang="en"
metal:use-macro="context/main_template/macros/master"
i18n:domain="gpcl.assets">
我在此div中顯示信息:
<div tal:define="asset view/getAssetDetails">
<div tal:content="asset/assetID"></div>
<div tal:content="asset/gpclAssetID"></div>
<div tal:content="asset/assetType"></div>
<div tal:content="asset/assetDescription"></div>
<div tal:content="asset/supplierName"></div>
<div tal:content="asset/model"></div>
<div tal:content="asset/serialNumber"></div>
<div tal:content="asset/status"></div>
<div tal:content="asset/location"></div>
<div tal:content="asset/options"></div>
</div>
如何使特殊字符正確顯示?
先感謝您。
為了安全起見,我會將您的數據轉換為unicode:
from Products.CMFPlone.utils import safe_unicode
...
return dict(assetID=safe_unicode(assetDetails[0]),
gpclAssetID=safe_unicode(assetDetails[1]),
assetType=safe_unicode(assetDetails[2]),
...
默認情況下,safe_unicode使用'uft-8',但可以被告知使用不同的字符集來解碼您的字符串: safe_unicode('some text', 'latin-1')
如果您的字符串實際上是采用UTF-8編碼的8位字符串,則只需使用Python .decode
函數即可。
<div tal:define="asset view/getAssetDetails">
<div tal:content="python:asset.assetID.decode('utf-8')"></div>
...
有關更多信息,請參見https://docs.python.org/2/howto/unicode.html 。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.