[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 メーリングリストの案内