環境変数の NLS_LANG の使い方
環境変数の NLS_LANG って今までよくわかってなかった。
今日はまってやっと理解したのが、NLS_LANG はオラクルクライアント側の文字コードを指定するものだということ。オラクルはデータベースの文字コードと NLS_LANG を比較して異なる場合は、データベースにデータを格納する際にデータベースの文字コードに変換して格納するという機能がある。今回 NLS_LANG を間違ってデータベース側の文字コードを設定していたので、文字コード変換がされず不具合になっていた。
PHPfestチュートリアル:Oracle Database 10g Express EditionおよびZend Core for Oracle
Oracleデータベースは指定された文字セットで作成されます。 PHPでは、NLS_LANG環境変数を設定することで独自の文字セットを選択できます。 Oracleクライアント(PHP)のグローバリゼーション設定では、ロケールのための適切なデータ形式、Oracleのエラー・メッセージに使用される言語、言語のソートの順番などのデフォルト値を指定できます。 NLS_LANGは、Webサーバーを起動する環境で設定する必要があります。