cx_OracleのEncodingに関するエラーが出た時の対処

Python入門

UnicodeEncodeError: ‘shift-jis’ codec can’t encode character ~~~~~
と出て、

sys.getdefaultencoding()をたたいてみたりしたけど、
特に問題はなさそうな場合

たいてい、原因はNLS_LANGにあります。

スポンサーリンク

NLS_LANGをJAPANESE_JAPAN.AL32UTF8にしてあげる

他のサイトでNLS_LANGをJAPANESE_JAPAN.JA16SJISTILDEにするといった記述があったのですが、
私の場合はうまいこと行かなかったです。

※追記
 対象のORACLEのDBでselect value from nls_database_parametersをたたくと、
 ご自身がどちらに設定すればいいのかが出てきます。

上手くいく人もいるかもしれないので、一応記載しておきます。

PC自体の設定で変えてあげてもいいのかもしれないですが、
影響範囲が大きくなると面倒なので、
プログラム内で記述しております。

補足

OracleでSQLを流した時に日付形式についてもよくハマることがあるので、
そんな時はNLS_DATE_FORMATに日付の形式を追加してあげるとうまく動きます。

コメント

タイトルとURLをコピーしました