import locale
prefered_encoding = locale.getpreferredencoding()
prefered_encoding 'ANSI_X3.4-1968'
apacheのWSGIを使用してUnicodeDecodeErrorアスキー。私はlocalhost上のpython3のデフォルトのエンコーディング私は<a href="http://inginious.readthedocs.io" rel="noreferrer">inginious</a>と呼ばれるフレームワークを使用していますし、そのテンプレートをレンダリングする<a href="http://webpy.org/" rel="noreferrer">web.py</a>を使用しています
web.template.render(os.path.join(root_path, dir_path),
globals=self._template_globals,
base=layout_path)
レンダリング作品が、私のステージングサーバー上ません。
両方ともpython3を実行します。私は私のhtmlのスタックトレースが
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),
あるここ
def __str__(self):
self._prepare_body()
if PY2:
return self["__body__"].encode('utf-8')
else:
return self["__body__"]
(それは私の手からだ)web.pyのみPython2にutf-8
のエンコーディングを強制していることがわかり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()
そして、エンコーディングが失敗する行は、ヘブライ文字がどこにあるかです。
export PYTHONIOENCODING=utf8
export LC_ALL=en_US.UTF-8
export LANG=en_US.UTF-8
export LANGUAGE=en_US.UTF-8
独創的なフレームワークはpython3.5サイト・パッケージの下pip
としてインストールされているユーザーcentos
下:
私は~/.bashrc
でいくつかの環境変数を設定してみました。 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'
apache
が(アプリの初期化中)コード内の環境変数を設定しようとしたユーザーでApacheサーバで提供しましたsetenv方法使用/etc/httpd/conf/httpd.conf
、編集:
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
と運を使用して再起動。
私の質問は、これを解決するベストプラクティスです。私はこれにハックがあることを理解していますが、私は下線の原因とそれを解決する方法が何であるかを理解したいと思います。
ありがとうございます!
import codecs
with codecs.open(file_path,'r',encoding='utf8') as f:
text = f.read()
に
open('/path/to/feedback.html').read()
から変更ファイル を読み込むとき
'ANSI_X3.4-1968' ==' ASCII'。 –
トレースバックの内容と再現方法を正確に示す必要があります。 –
私はstacktraceといくつかのコードを追加しましたが、再現するためには有効な提案ではない画期的なフレームワークをインストールしなければならないので、私の最善の選択肢はよく質問を – WebQube