PostgreSQL Windows の psql で pager off すると出力が文字化けする

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