[pgsql-jp: 41159] Windowsイベントログで日本語メッセージが文字化けする問題の解決方法を教えてください

MauMau maumau307 @ gmail.com
2012年 8月 1日 (水) 21:53:30 JST


こんにちは、MauMauといいます。

Windowsでイベントログのメッセージが文字化けしてしまいます。
解決方法をご存じないでしょうか?

Windows VistaでPostgreSQL 9.1.3を使っています。
EnterpriseDBが公開しているインストーラでPostgreSQLをインストールしました。
インストールではロケールにCを、文字符号化方式にUTF-8を選びました(と思います)。 

postgresql.confでは、lc_messagesに'ja_JP'を、
それ以外のlc_XXXには'C'を設定しています。

イベントビューアのメッセージ欄からコピーしたメッセージは次のとおりです。

サーバの起動完了を待っています...
サーバの起動完了を待っています...
2012-08-01 20:46:26 JST LOG:  ?f?[?^?x?[?X?V?X?e???? 2012-06-22 21:35:07 JST 
??V???b?g?_?E?????????
2012-08-01 20:46:26 JST LOG:  ?f?[?^?x?[?X?V?X?e???? 2012-06-22 21:35:07 JST 
??V???b?g?_?E?????????
2012-08-01 20:46:27 JST LOG:  ?f?[?^?x?[?X?V?X?e????????t????????????????B
2012-08-01 20:46:27 JST LOG:  ?f?[?^?x?[?X?V?X?e????????t????????????????B
2012-08-01 20:46:27 JST FATAL:  ?f?[?^?x?[?X?V?X?e????N??????????
2012-08-01 20:46:27 JST LOG:  ?????o?L???[???????`???v???Z?X
2012-08-01 20:46:27 JST FATAL:  ?f?[?^?x?[?X?V?X?e????N??????????
2012-08-01 20:46:27 JST LOG:  ?????o?L???[???????`???v???Z?X
サーバは起動し、接続を受け付けています

サーバログファイルには、次のように日本語メッセージが正しく出力されています。
下記は、メモ帳でログファイルを開いてコピー&ペーストしたものです。

2012-08-01 21:02:37 JST LOG:  データベースシステムは 2012-08-01 20:59:31 JST 
にシャットダウンしました
2012-08-01 21:02:37 JST LOG:  データベースシステムの接続受付準備が整いました。 

2012-08-01 21:02:37 JST LOG:  自動バキュームランチャプロセス

9.0のリリースノートには、文字化けを修正したという次の記述があります。

http://www.postgresql.jp/document/pg910doc/html/release-9-0.html

[抜粋]
UTF16符号化方式でWindowsのイベントログに書き出します。(Itagaki Takahiro)
これでWindowsのPostgreSQLのログメッセージに対する多言語サポートが実現しました。 


イベントログのメッセージのうち、サーバが出力したものが文字化けしています。
pg_ctlが出力したメッセージは正しく出力されていることがわかります。

サーバでは、メッセージをUTF-16に変換してReportEventW()で出力しています。
一方、pg_ctlは文字コードを変換せず、そのままReportEvent()で出力しています。
サーバ側の処理は9.0と9.1で変わりないように見えるので、何が問題なのかがわかりません。

よろしくお願いします。

以上です。




pgsql-jp メーリングリストの案内