這是其中一個例子:
Traceback (most recent call last): File "C:\Program Files\Google\google_appengine\google\appengine\ext\webapp\__init__.py", line 507, in __call__ handler.get(*groups) File "C:\Program Files\Google\google_appengine\google\appengine\ext\admin\__init__.py", line 839, in get field = data_type.input_field(name, value, sample_values) File "C:\Program Files\Google\google_appengine\google\appengine\ext\admin\__init__.py", line 940, in input_field value = str(value) UnicodeEncodeError: 'ascii' codec can't encode characters in position 0-1: ordinal not in range(128)
這一隻程式一直都有錯誤,之前反應給Google,不過他們不理我,可能他們不會中文。
檔案位置在這裡:
C:\Program Files\Google\google_appengine\google\appengine\ext\admin\__init__.py
這是我改過的版本:
http://paste.plurk.com/show/176672/
這是原始的版本 (在您原本的環境應該都有,而且是一樣的)
http://paste.plurk.com/show/176676/
有興趣的人自可自行線上diff以下,可以使用 線上文字比較工具
python中的中文問題基本上有幾個條件:
- str()前必需要是 utf-8,比如 str( utf8_var.encode(‘utf-8’) )
- print 任何字串前,請先確認是utf-8,方法同上
- 請確認您測試的瀏覽器,在refresh時的編碼是utf-8
- sprintf的方法前,不能是utf-8,比如 “Hi, I am %s ” % utf8_var.decode(‘utf-8’)
- 操作replace或是re的時候,儘量使用 unicode
以上幾點是之前學到的經驗法則。