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です。