import locale
prefered_encoding = locale.getpreferredencoding()
prefered_encoding 'ANSI_X3.4-1968'
我使用了一個名爲inginious框架,它使用web.py來呈現它的模板的Apache WSGI的UnicodeDecodeError ASCII。python3默認編碼使用
web.template.render(os.path.join(root_path, dir_path),
globals=self._template_globals,
base=layout_path)
渲染作品在我的本地但不是我的臨時服務器上。
他們都運行python3。我看到web.py強制utf-8
上
在Python2編碼只(這是從我手中)
def __str__(self):
self._prepare_body()
if PY2:
return self["__body__"].encode('utf-8')
else:
return self["__body__"]
這裏是堆棧跟蹤
t = self._template(name),
File "/lib/python3.5/site-packages/web/template.py", line 1028, in _template,
self._cache[name] = self._load_template(name),
File "/lib/python3.5/site-packages/web/template.py", line 1016, in _load_template
return Template(open(path).read(), filename=path, **self._keywords)
File "/lib64/python3.5/encodings/ascii.py", line 26, in decode
return codecs.ascii_decode(input, self.errors)[0]
UnicodeDecodeError: 'ascii' codec can't decode byte 0xe2 in position 83: ordinal not in range(128),
我的HTML不包括hebew字符,小例子
<div class="modal-content">
<div class="modal-header">
<button type="button" class="close" data-dismiss="modal">×</button>
<h4 class="modal-title feedback-modal-title">
חישוב האיברים הראשונים בסדרה של איבר ראשון חיובי ויחס שלילי:
<span class="red-text">אי הצלחה</span>
我打開它像這樣:
open('/path/to/feedback.html').read()
並且編碼失敗的行是希伯來字符的位置。
我試着在~/.bashrc
設置一些環境變量:巧妙的框架下python3.5站點包安裝爲pip
用戶centos
下
export PYTHONIOENCODING=utf8
export LC_ALL=en_US.UTF-8
export LANG=en_US.UTF-8
export LANGUAGE=en_US.UTF-8
。它的用戶下送達的Apache服務器apache
試圖在代碼中設置環境變量(應用程序的初始化過程中),這樣在Apache WSGI會意識到他們的
import os
os.environ['LC_ALL'] = 'en_US.UTF-8'
os.environ['LANG'] = 'en_US.UTF-8'
os.environ['LANGUAGE'] = 'en_US.UTF-8'
我有編輯/etc/httpd/conf/httpd.conf
使用setenv方法:
SetEnv LC_ALL en_US.UTF-8
SetEnv LANG en_US.UTF-8
SetEnv LANGUAGE en_US.UTF-8
SetEnv PYTHONIOENCODING utf8
,並使用sudo service httpd restart
,仍然沒有運氣重新啓動。
我的問題是,解決這個問題的最佳做法是什麼?我明白這有些瑕疵,但我想了解下劃線原因以及如何解決這個問題。
謝謝!
'ANSI_X3.4-1968' =='ASCII'。 –
您需要向我們展示回溯是什麼以及如何重現它。 –
我已經添加了堆棧跟蹤和一些更多的代碼,但爲了重現,你將不得不安裝inginious框架,這不是一個有效的建議,所以我最好的選擇是描述問題很好 – WebQube