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 の対処
こちらに書いてることそのまんまなんだけど、connection取得時にエンコードを指定すればokっぽい。
1 |
conn = cx_Oracle.connect(strconn, encoding = "UTF-8", nencoding = "UTF-16") |
結論
やっぱ文字コード周りは面倒…。
あとこれが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