0

在GAE中構建網站。 我在開發數據庫的dev服務器上完成了大部分工作。在我的開發服務器中,我使用UTF-8插入實體,因爲如果我不寫這些值。但是,這使得我必須使用{{ nom.titre.encode("utf-8")}}才能使用jinja2正確顯示它們。 我知道GAE數據存儲只使用UNICODE,所以我可以預料到我現在面臨的問題。本地開發服務器和應用程序引擎python utf 8

因此,我使用appcfg.py download_data --url=http://localhost:8080/_ah/remote_api/ --filename=filename.csv --kind=-kind- 來獲得我的開發數據存儲的備份。

現在的問題是,當我嘗試更新到服務器。

要麼使用:

  • appcfg.py upload_data --url=http://as.appspot.com/_ah/remote_api --kind=kind --filename=filename.csv 但{{nom.titre.encode( 「UTF-8」)}}使得錯誤上GAE與神社

  • appcfg.py create_bulkloader_config --filename=G:\Backup\datastore\bulkloader.yaml --url=http://toolsetdocs.appspot.com/_ah/remote_api

    transformers: 
    - kind: CISP 
        connector: csv 
        connector_options: 
        encoding: utf-8 
    

    ,我得到一個錯誤與UnicodeDecodeError : 'utf-8' codec can't decode .....等等

那麼,什麼是上傳的信息的最直接的方式我dev服務器數據存儲放入GAE數據存儲保持UTF-8並且不更改模板編碼?

+0

請將顯示持久性的代碼發佈到數據存儲區。 – Sologoub

+0

我找到了解決方案。事實上,所有的東西都可以處理UNICODE,開發數據存儲,GAE數據存儲和Jinja2。因此,我使用JSON獲取數據,將其放在GAE數據存儲中,而無需對Python腳本進行任何進一步的編碼或解碼。然後我將它下載到我的PC上並上傳到開發數據存儲區。包含特殊字符的字符串(例如「Systèmedigestif」)不會顯示在開發數據存儲區中,但我仍然可以訪問它們以進一步編碼/解碼。 – Juanse

回答

1

當您存儲字符串時,您應該使用decode('utf-8'),然後進行編碼以用於顯示目的。您目前正在模板中執行此操作,但在存儲期間您應該解碼預期的UTF-8字符串。

+0

所以,換句話說,你是在說我必須採取相反的措施。將UNICODE放入數據存儲中,然後以UTF-8格式顯示它?如果我再次遇到同樣的問題,我會使用這個提示。謝謝 – Juanse

+0

是的。正如您所說,GAE數據存儲以Unicode格式存儲它,但在顯示時,您可以根據需要對其進行編碼。 – Sologoub

相關問題