BLOG

Django+ApacheをCentOSで動かした際にUnicodeEncodeErrorが発生する時の対処法

Django で開発した Web アプリケーションを Webサーバー(Apache)、環境はCentOSで、ConoHa VPS のDjango インスタンスにデプロイした際に色々と問題が発生したので対処法をまとめます。

UnicodeEncodeError: ‘ascii’ codec can’t encode characters in position 20: ordinal not in range(128)的なエラーが出る原因

開発環境では大丈夫だったとしても、Django アプリケーションをデプロイすると、非 ASCII 文字を含むファイル名のファイルをアップロードするときにがエンコード関連でエラーが発生します。

つまりPOSTメソッドでデータを送受信、みたいなアプリを作った場合などに発生します。

対処法(CentOS 8)

vim /etc/sysconfig/httpd で httpd ファイルを編集します。

下の方に以下を追加して

LANG='en_US.UTF-8'
LC_ALL='en_US.UTF-8'

service httpd restart でhttpd の再起動をすれば反映されます。

恐らくこれで大丈夫だと思います。

ちなみにこの対処法は Django の公式ドキュメントに書いてあることなのですが、編集する階層が若干違うので注意して下さい。