cx_oracleで”UnicodeDecodeError: shift_jis’ codec can’t decode byte 0xef”が出た時の対処

スポンサーリンク

Winは基本触れたくもないのだけれど、客先で止むを得ず使わなければならない機会があった。
その際、WindowsのPowerShellからAWS EC2上のCentOSにSSHして色々やってたら、cx_OracleでSELECT文を実行しただけでUnicodeDecodeErrorなるものが出た。
意外と日本語でズバリそのものな回答がなかったので対処法をメモしておく。

環境

Python 3.7.3
CentOS Linux release 7.6.1810 (Core)
cx_Oracle 7.1.3
なんか古いWindows

UnicodeDecodeError: shift_jis’ codec can’t decode byte 0xef の対処

UnicodeDecodeError, to read a nvarchar2 data,and some special characters can’t decode by utf8. · Issue #83 · oracle/python-cx_Oracle

こちらに書いてることそのまんまなんだけど、connection取得時にエンコードを指定すればokっぽい。

結論

やっぱ文字コード周りは面倒…。
あとこれがWinのせいなのかは知らんけどWinで開発とかマジ無理。

参考にしたサイトなど

UnicodeDecodeError, to read a nvarchar2 data,and some special characters can’t decode by utf8. · Issue #83 · oracle/python-cx_Oracle
Connection Object — cx_Oracle 7.2.0-dev documentation

ABOUTこの記事をかいた人

職業:遊び人。1日の半分は睡眠時間の超ロングスリーパー。元大手IT企業のサラリーマンだったが、ブラックな労働環境で体を壊した挙句クビになり、やむをえず独立。それ以来定職にもつかず、半分遊びのようなヌルい仕事をしながら適当に暮らしている。良く言えばノマドワーカー。 詳しいプロフィールはこちら