私はMakoにUnicode文字を含む文字列をレンダリングさせようとしています:
tempLook=TemplateLookup(..., default_filters=[], input_encoding='utf8',output_encoding='utf-8', encoding_errors='replace')
...
print sys.stdout.encoding
uname=cherrypy.session['userName']
print uname
kwargs['_toshow']=uname
...
return tempLook.get_template(page).render(**kwargs)
関連するテンプレート ファイル:
...${_toshow}...
出力は次のとおりです。
UTF-8
Deşghfkskhü
...
UnicodeDecodeError: 'ascii' codec can't decode byte 0xc5 in position 1: ordinal not in range(128)
文字列自体は問題なく印刷できるので問題ないと思います。
input/output_encoding
パラメータとパラメータで(たくさん)遊んだことがありdefault_filters
ますが、ASCIIコーデックでデコード/エンコードできないと常に不平を言っています。
そこで、ドキュメントにある例を試してみることにしました。以下が「最適」に機能します。
input_encoding='utf-8', output_encoding='utf-8'
#(note : it still raised an error without output_encoding, despite tutorial not implying it)
と
${u"voix m’a réveillé."}
そして結果は
voix mâ�a réveillé
これが機能しない理由がわかりません。「マジックエンコーディングコメント」も機能しません。すべてのファイルは UTF-8 でエンコードされています。
何時間も無駄に費やしました。何か足りないものはありますか?
アップデート :
私は今、より簡単な質問をしています:
すべての変数が Unicode になったので、何も適用せずに Mako に Unicode 文字列をレンダリングさせるにはどうすればよいでしょうか? 空のフィルター / render_unicode() を渡しても役に立ちません。