質問: { 'prefecture': prefecture, } return render(request, 'test/test.html', context) ``` ``` {% for pref in prefecture %} {{pref}} {% endfor %} ``` 上記のようにしているのですが、開発環境と本番環境とで挙動が違います。 開発環境ではこちらの狙い通りアイウエオ順で並ぶのですが、本番環境ではそうなりません。 Gunicorn+nginxでは、日本語の取り扱いが違うのでしょうか。 アイウエオ順に並べる方法がお分かりの方、ご教示頂ければ幸いです。 よろしくお願いいたします。
回答: Python のバージョンを確認してみてください。2 と 3 では文字列の扱いが異なりますし、2 の場合は環境によって異なるエンコードを使います。 追記 Pythonの日本語処理 ``` Pythonでは,文字列は8ビット単位で格納され,その文字符号化はプラットフォームによって異なる. 文字列は次のように生成する. >>> s='日本語' >>> print s 日本語 なお,プラットフォームにより,変数sにどのような値が入っているかは異なる.例えば,Mac OS Xでは,この文字列はUTF-8で符号化され,文字列長は9バイトである. >>> s '\xe6\x97\xa5\xe6\x9c\xac\xe8\xaa\x9e' >>> len(s) 9 Windowsでは,CP 932で符号化され,文字列長は6バイトである. >>> s '\x93\xfa\x96{\x8c\xea' >>> len(s) 6 ```