はじめに
Windowsコマンドプロンプトからsqlplusを利用する場合、DB側の設定で文字化けが起こってしまう場合があるので、クライアントサイドで試せる解決法を自分用メモとして記載
現象(文字化け)
コマンドプロンプトから、Oracleにログインした場合に以下ように、メッセージが文字化けしてしまうケースがある。
文字化け
sqlplus MYACCOUNT/passwd@ORADB
SQL*Plus: Release 19.0.0.0.0 - Production on Fri May 28 11:25:11 2021
Version 19.3.0.0.0
Copyright (c) 1982, 2019, Oracle. All rights reserved.
??????????: ? 5? 28 2021 11:22:23 +09:00
Oracle Database 19c Enterprise Edition Release 19.0.0.0.0 - Production
Version 19.3.0.0.0
?????????
>SQL
これはサーバーから送信されるUNICODEのメッセージを、コマンドプロンプト上に表示しようとしてエラーになっているので、以下の方法で直る場合がある。
- 文字コードを932から65001に変更する
- 環境変数NLS_LANGをJapanese_Japan.AL32UTF8に設定する
文字コード変更
chcp 65001
環境変数設定
SET NLS_LANG=Japanese_Japan.AL32UTF8
この設定を行うことで、先ほどの文字化けは以下のように表示される。
正常表示
sqlplus MYACCOUNT/passwd@ORADB
SQL*Plus: Release 19.0.0.0.0 - Production on 金 5月 28 11:56:26 2021
Version 19.3.0.0.0
Copyright (c) 1982, 2019, Oracle. All rights reserved.
最終正常ログイン時間: 金 5月 28 2021 11:41:25 +09:00
Oracle Database 19c Enterprise Edition Release 19.0.0.0.0 - Production
Version 19.3.0.0.0
に接続されました。
SQL>
ただし、サーバーサイドの文字コード設定によってはこれでも化ける可能性はあるので、ダメだった場合には別の方法を考える必要がある。