アプリケーション実行環境の言語の設定、およびアプリケーションが使用する符号化方式の設定について説明します。
アプリケーション実行環境の言語設定は、データベースサーバのメッセージロケールの設定と合わせる必要があります。
アプリケーションが出力するメッセージの中には、アプリケーション側のメッセージに、データベースサーバから送られたメッセージを埋め込む場合があります。このとき、アプリケーション側のメッセージは、アプリケーション側のメッセージロケールに従い、データベースサーバから送られるメッセージは、データベースサーバ側のメッセージロケールに従います。そのため、両方のメッセージロケールが一致していない場合には、言語や符号化方式が混在します。符号化方式が一致しない場合には、文字化けが発生します。
Linux/Solarisの場合
プロセスのロケールのLC_MESSAGESカテゴリが、データベースサーバのメッセージロケールと一致するように設定してください。環境変数を用いるなどいくつかの方法があります。詳細は、setlocale関数のオペレーティングシステムに付属するドキュメントを参照してください。
例
setlocale関数で“ja_JP.UTF-8”の指定例
setlocale(LC_ALL,"ja_JP.UTF-8");
LC_ALLに指定することにより、LC_MESSAGEカテゴリに設定を適用しています。
Windows(R)の場合
OSのロケールをデータベースサーバのメッセージロケールの設定と合わせてください。
アプリケーションに埋め込まれ、データベースに渡される符号化方式と、実行時のクライアント符号化方式の設定は同じにしてください。データベースサーバ側で正しく符号化方式を変換できなくなります。
アプリケーションの符号化方式は、以下のいずれかの方法で設定してください。
実行時の環境変数PGCLIENTENCODINGに設定する。
接続文字列のclient_encodingキーワードに設定する。
PQsetClientEncoding関数を使って設定する。
参照
設定できる符号化方式を表す文字列は、“PostgreSQL文書”の“サーバの管理”の“サポートされる文字セット”を参照してください。
例えば、Unicode、8ビットの場合は、“UTF8”という文字列を設定します。
例
環境変数“PGCLIENTENCODING”に設定する場合
クライアントの符号化方式が“UTF8”の場合の設定例(Bash)
> PGCLIENTENCODING=UTF8; export PGCLIENTENCODING
クライアントの符号化方式が“UTF8”の場合の設定例
> set PGCLIENTENCODING=UTF8
注意
コマンドプロンプトに結果を出力する際、文字化けする場合があります。文字化けした場合は、コマンドプロンプトのフォントの設定を見直してください。