PostgreSQLでの「\encoding」コマンドによる現在の文字エンコーディングの確認と変更方法

Linuxコンソールの文字エンコーディングがUTF-8で、PostgreSQLデータベースがEUC_JPの場合、そのまま何も設定を変更することなくpsql接続をしてselectでテーブル内の日本語文字列を表示させようとすると、文字化けしてしまう。Linuxコンソールの文字エンコーディングとPostgreSQLのデータベースの文字コードが異なると文字化けしてしまうのだ。

Linuxコンソールの文字エンコーディングとPostgreSQLのデータベースの文字コードが異なる場合でも、Linuxコンソールで日本語文字列を文字化けなく表示させる方法の1つが、psqlコマンドを使用し、表示する文字のエンコーディングを変更し、Linuxコンソールの文字コードと同一にすることだ。

psqlであるデータベースに接続した後、

\encoding 文字コード

と入力し、[Enter]キーを押すことで、指定した文字コードに文字エンコーディングを変更することができる。

また、文字コードを指定せず、

\encoding

と入力し、[Enter]キーを押すことで、現在の文字エンコーディングを確認することもできる。

《備考》PostgreSQL8.1のヘルプに記載されている情報
\encoding [ENCODING]
show or set client encoding

《例》Linux(CentOS 5)+PostgreSQL 8.1での現在の文字エンコーディングの確認と変更方法
[root@nobuneko ~]# psql -U postgres nobuneko_database
Welcome to psql 8.1.23, the PostgreSQL interactive terminal.

Type: \copyright for distribution terms
\h for help with SQL commands
\? for help with psql commands
\g or terminate with semicolon to execute query
\q to quit

nobuneko_database=# \encoding
EUC_JP ※現在の文字エンコーディングがEUC_JPであることが分かる。
nobuneko_database=# \encoding UTF8 ※現在の文字エンコーディングをUTF-8に変更する。
nobuneko_database=# \encoding
UTF8 ※現在の文字エンコーディングがUTF-8であることが分かる。

※実行したコマンドは「\encoding UTF8」としたが、「\encoding UTF-8」としても同じ結果だった。
キーボードで「UTF」まで入力し、キーボードのTabキーを押すと、「UTF8」と入力補完されたので、PostgreSQL的には、「UTF-8」ではなく「UTF8」が正式なのだろう。

前へ

PostgreSQLでの「\copyright」コマンドによる著作権表示の方法

次へ

PostgreSQLでの「\h」コマンドによる使用可能なSQLコマンド一覧の表示と使用方法の確認方法