DB2では、DBのコードセットとクライアントのCODEPAGEが異なる場合、自動でコードページの変換が行われる。クライアント側のコードセットはプロファイル・レジストリまたは環境変数によって判断される。 以下のコマンドで確認する
db2set -all
プロファイル・レジストリによって設定されたDB2CODEPAGEはインスタンス単位の設定のため、ミドルウェアによっては上手く認識されない場合がある可能性がある。環境変数で指定された値であれば、そのユーザーで実行されるアプリケーションで認識されるのではないかと考えられる。
したがって、SJISで処理を行うクライアントではset DB2CODEPAGE=IBM-943を指定して接続を行うことで文字化けなく処理が可能となるはず。また、UTF-8で処理を行うクライアントではset DB2CODEPAGE=1208を指定して接続を行うことでUTF-8で処理が可能なはず。
JDBCからの接続は常にUTF-8で処理され、CLI/ODBCの場合は設定によりCODEPAGEを設定できる。