psql バージョン
psql.exe --version psql (PostgreSQL) 17.1
以下のように接続し、
chcp 65001 $Env:PGCLIENTENCODING = "utf-8" $Env:PGHOST = "localhost" $Env:PGDATABASE = "postgres" $Env:PGPORT = "5432" $Env:PGUSER = "postgres" $Env:PSQLRC = ".psqlrc" $Env:PGPASSWORD = "***" psql.exe
\pset pager off
するとコンソール出力が文字化け。
postgres=# select id, name from foo; id | name -----+----------- 100 | あいう 101 | アイウ (2 rows) postgres=# \pset pager off Pager usage is off. postgres=# select id, name from foo; id | name -----+----------- 100 | 繧「繝峨Α (2 rows) 」陦・
PowerShell 側でエンコーディング設定をいくらもてあそんでも解消せず。
chcp 65001 $PSDefaultParameterValues['*:Encoding'] = 'utf8' $global:OutputEncoding = [System.Text.Encoding]::UTF8 [Console]::OutputEncoding = [System.Text.Encoding]::UTF8
ということで、Windows 環境の psql を使う場合は、pager on
のまま使うか、\setenv PAGER less
など外部のページャー使用したほうがよさそうです。
pager_min_lines
の値を大きくして pager off
のような振る舞いができるかもとも思いましたがダメでした。
pager_min_lines
がページ高より大きな数に設定されている場合、少なくともこれに設定されている行数の出力がなければ、ページャプログラムを呼び出しません。 デフォルトの設定は0です。