Quantcast
Channel: プログラミング
Viewing all articles
Browse latest Browse all 7930

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

$
0
0

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




Viewing all articles
Browse latest Browse all 7930

Trending Articles