今時あえてCygwin版PostgreSQLサーバを使うケースは稀でしょうが、仕事で日本語ファイル名のCSVをリスト化or取り込む時に重宝してます。その件は別途書くとして、今回は文字コード絡みの注意の備忘録。回避策はこちら。端的に言うなら「lc_messagesを日本語にしない」こと。 実行環境は次のとおりです。 OS : Windows7 x64 SP1(英語版) Cygwin 2.5.1 x64 + PostgreSQL 9.5.2 cygserverとPostgreSQLをアドホックに起動(サービスでない) クライアント : psql(Windowsネイティブ、Cygwin版ともに同じ現象) Windowsネイティブのpsqlでの現象から、順を追って。コマンドプロンプトのコードページを932にして(日本語フォントを使うため)psqlを起動しました。表示を見やすく設定していますが、問題とは直接関係ないです。
> chcp 932
Active code page: 932

> psql -U postgres -p 5952
psql (9.5.3, サーバー 9.5.2)
"help" でヘルプを表示します.

postgres=# \t \\ \a \\ \set PROMPT1 '#'
「タプルのみ表示」は on です。
出力フォーマットは unaligned です。
↓ クライアントエンコーディングはSJS。サーバを確認。またメッセージはCで、要は英語のまま。この状態で、SJISになくユニコードに存在する「ゔ」をコードポイントでクエリすると、英語のエラーメッセージが出ます。1月12日に詳しく書いた「符号化方式UTF8における~バイトシーケンスを持つ文字」エラーで、これは当然の現象。結果を受け取るクライアント側の文字セットが不足しているので。
# \encoding
SJIS

# select version();
PostgreSQL 9.5.2 on x86_64-unknown-cygwin, compiled by gcc (GCC) 5.3.0, 64-bit

# select current_setting('lc_messages');
C

# select chr(12436);
ERROR:  character with byte sequence 0xe3 0x82 0x94 in encoding "UTF8" has no equivalent in encoding "SJIS" 
次が問題。メッセージを日本語に設定して同じクエリを送ると ↓ サーバが強制終了しました。
# set lc_messages to 'ja_JP';
SET

# select chr(12436);
サーバとの接続が想定外にクローズされました
        おそらく要求の処理前または処理中にサーバが異常終了
        したことを意味しています。
サーバーへの接続が切れました。リセットしています: 失敗。
日本語メッセージにすること自体は問題なく、他のエラーでは ↓ 普通です。やっぱりSJISにない字をクエリしたのと複合して発生する現象の模様。
# set lc_messages to 'ja_JP';
SET

# select rand();
ERROR:  関数rand()は存在しません
行 1: select rand();
             ^
HINT:  指定名称、指定引数型に合う関数がありません。明示的な型キャストが必要かもしれません 
同じ現象がCygwin版psqlでも ↓ 発生。強制終了時のメッセージ内容も同じです。最初にクライアントエンコーディングをSJISにしてますが、デフォルトはUTF-8。普通に「ゔ」を受け取れるから、そのままなら問題自体に出会わないと思います。
# \encoding sjis
# set lc_messages to 'C';
SET

# select chr(12436);
ERROR:  character with byte sequence 0xe3 0x82 0x94 in encoding "UTF8" has no equivalent in encoding "SJIS" 

# set lc_messages to 'ja_JP';
SET

# select chr(12436);
server closed the connection unexpectedly
        This probably means the server terminated abnormally
        before or while processing the request.
The connection to the server was lost. Attempting reset: Failed.
対策としては単純で、Windowsネイティブのpsqlならlc_messagesを日本語(ja_JP)にしない、CygwinのpsqlならクライアントエンコーディングをUTF-8のままにしておく。というかその前に、あえて必要がなければCygwin版PostgreSQLは使わない、が妥当かと。 サーバがWindowsネイティブなら ↓ このように強制終了は起きず、例のエラーメッセージ「符号化方式"UTF8"における…バイトシーケンスを持つ文字は"SJIS"符号化方式では等しくありません」が出るだけ。これはこれで困り物ですが(詳細は1月12日の記事)、最近、Windows版lessを使う対策を発見したので、近々書く予定です。
R:\>d:\appsportable\postgresql\9.5.3\bin\psql -U postgres
psql (9.5.3)
"help" でヘルプを表示します.

postgres=# \t \\ \a \set PROMPT1 '# '
「タプルのみ表示」は on です。
出力フォーマットは unaligned です。

# \encoding
SJIS

# set lc_messages to 'ja_JP';
SET

# select chr(12436);
ERROR:  符号化方式"UTF8"における0xe3 0x82 0x94バイトシーケンスを持つ文字は"SJIS"符号化方式では等しくありません