OBをトコトン極める

Oracle データベースキャラクタセット(NLS_CHARACTER_SET)の確認

  • 2018.11.12
  • 株式会社システムインテグレータ
Oracle データベースキャラクタセット(NLS_CHARACTER_SET)の確認

今回はSI Object Browser(以下、OB)を使用して、データベースキャラクタセット(NLS_CHARACTER_SET)の確認をしてみたいと思います。

データベースキャラクタセット(NLS_CHARACTER_SET)はデータベース内で扱う文字コードです。
例えば「あ」という文字も保存する際にはバイナリ値で格納されます。
その際にどのようなバイナリ値に変換するかが「文字コード」「キャラクタセット」と呼ばれるものです。

データベースの設定に指定する文字コードはデータベースを稼動させるサーバーのOSの文字コードを使うことが多いです。有名なところで言うと「AL32UTF8」「JA16SJISTILDE」「JA16EUCTILDE」などがあります。

サーバーとクライアントとOS

データベースキャラクタセット(NLS_CHARACTER_SET)

データベース上で扱う文字コードです。データベース作成後に変更は出来ません。
データベースを稼動させるサーバーのOSの文字コードを使うことが多いです。

データベースクライアントの設定(NLS_LANG)

データベースから取り出した文字データをクライアント側でどのようなコードに変換するかの設定。
クライアントのOSで使用できない文字コードを選ぶと文字化けします。

コード変換する際に変換処理の時間がかかるため、NLS_CHARACTER_SETとNLS_LANGが同じである方がベターですが、クライアント側の設定は必ずしもNLS_CHARACTER_SETと同じものを指定する必要はありません。クライアント側で扱いやすい文字コードを選択します。

データベース開発に関するお役立ち資料

ちなみにOBで接続する際のNLS_LANGはデフォルト「UTF8」で接続します。
(※SI Object Browserは「UTF8」で接続することを前提として作成しておりますので、特に問題が無い場合は「UTF8」で使用してください)

1

- ログオン時の文字コード指定 -

どこで確認できる?

データベースに接続した状態で【サポート情報】を開きます。

- サポート情報の場所 -

【サポート情報】を開いたら下へスクロールします。
一番下に接続情報がありますので、その中に「サーバー文字コード」があり、「NLS_CHARACTER_SET」が確認できます。

3

- サポート情報の接続情報で確認 -

隣に表示されている「NLS_NCHAR_CHARACTER_SET」はデータ型で「NCHAR」「NVARCHAR2」を使用した際に使われる文字コードです。

SQLで確認する場合は下記で確認します。
SELECT * FROM nls_database_parameters
WHERE parameter = 'NLS_CHARACTERSET';

いかがだったでしょうか。今回はキャラクタセットについての記事でした。
単に文字化けといっても、問題となりうる箇所は複数ありますので、場所を特定するときなどにお役立てください。

SI Object Browser 製品カタログ

いまさら聞けない Oracleの基本