簡體   English   中英

克隆網站:如何獲得特殊字符以正確顯示在我的plone頁面上?

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM