psql の入出力エンコーディングを確認・設定する
Windows 上の PostgreSQL のコマンドラインツール psql を使ってデータベースにデータを取り込もうとしたところ、次のようなエラーが出た。 入力の文字エンコーディングが合っていない。
example_db=> \i data.sql psql:data.sql:41: ERROR: invalid byte sequence for encoding "SJIS": 0x85 0x27
入出力エンコーディングを確認する
example_DB=> show client_encoding; client_encoding ----------------- SJIS (1 row)
入出力エンコーディングを設定する
一時的に(クライアントを終了するまで)エンコーディングを変えるには \encoding
内部コマンドを用いる。
example_DB=> \encoding 'UTF8' example_DB=> show client_encoding; client_encoding ----------------- UTF8 (1 row)
デフォルトの入出力エンコーディングを設定する
デフォルトの入出力エンコーディングは Unix 系の OS なら環境変数 LC_TYPE
に基づいて決定される。
それを変更するには環境変数 PGCLIENTENCODING
を設定する。
PGCLIENTENCODING=UTF8