WindowsのSQLPlusで日本語が文字化けするときの対処法
先日 Windows Server 2008 R2 にインストールした Oracle 10g (10.2.0.5) に、SQLPlus からアクセスしたところ・・・、日本語が文字化けしてるじゃないですか!
症状としては、全角の文字が全て '?' で表示されるというもので、サンプルとしては以下のような感じでした。
C:\> sqlplus /nolog SQL*Plus: Release 10.2.0.5.0 - Production on Tue Apr 1 10:00:00 2014 Copyright (c) 1982, 2010, Oracle. All Rights Reserved. SQL> connect / as sysdba ???????? SQL>
う~ん、これでは何が何やらで作業ができませんがな。というわけで、対処法をメモメモです φ(..)。
なお、こうなってしまうと接続されているのかされていないのかすら分かりませんので、exit 連打で SQLPlus を終了させておきます。ついでにコマンドプロンプトも終了させます。
で、結論から言ってしまうと、サーバーのシステム環境変数に
NLS_LANG = JAPANESE_JAPAN.JA16SJISTILDE
を設定してからコマンドプロンプトを開きなおして SQLPlus を起動すると、全角文字が正しく表示されるようになります。
とはいえ、今回はデータベースの文字コードが 'JA16SJIS' だったのでこれで解決しましたが、上記の 'JA16SJISTILDE' の部分はお使いの環境に合わせて適切に変更・設定してください。
ちなみにその他のキャラクターセットとしては、'JA16EUCTILDE' と 'AL16UTF8' というのがあるようです(僕は使ったこと無いですけど)。
設定の手順は、[コンピュータ] の [プロパティ] から [システムの詳細設定] をクリックして [システムのプロパティ] ウィンドウを開きます。
[システムのプロパティ] のウィンドウの [詳細設定]タブの [環境変数]ボタンをクリックし、[環境変数] ウィンドウを開きます。
[環境変数] ウィンドウの [システム環境変数] のところの [新規]ボタンをクリックし、[新しいシステム変数] ウィンドウを開き、変数名欄に 「NLS_LANG」 を、変数値欄に 「JAPANESE_JAPAN.JA16SJISTILDE」 を入力し、[OK]ボタンをクリックてウィンドウを閉じます。
あとは開いてきたウィンドウを逆の順番で [OK]ボタン(もしくはウィンドウ右上の[?]ボタン)をクリックして全て閉じれば作業完了です。
参照リンク
・Sqlplusで日本語が文字化けする | 株式会社プレオン
・SQLPlusが文字化けするときの対処法 | CreativeStyle
・Oracleトラブル対策の基礎知識(5):文字化けに関するトラブルに強くなる【基礎編】 (1/3) - @IT