ASH | サーバ | セキュリティ | Linux | FreeBSD | DB | Web | CGI | Perl | Java | XML | プログラム | ネットワーク | 標準 | Tips集

Oracleにおける多国語対応

環境変数の設定

 Oracleには、NLS機能があり、多国語に対応しています。
 環境変数NLS_LANGには、クライアントの言語_地域.キャラセットを指定します。
 また、環境変数LANGも正しく設定します。 OSが対応していない場合などは、unsetenv LANGとした方がいいでしょう。 また、OSが対応していない場合でも、TeraTermを使えば、InternetExplorerの多言語フォントを使って表示することができます。

例:
・日本語(EUC)の場合
unix# setenv LANG 'ja'
unix# setenv LANG 'ja_JP.EUC'
unix# setenv NLS_LANG 'Japanese_Japan.JA16EUC'

・日本語(SJIS)の場合
unix# setenv LANG 'ja_JP.PCK'
unix# setenv LANG 'ja_JP.Shift_JIS'
unix# setenv NLS_LANG 'Japanese_Japan.JA16SJIS'

・日本語(UTF-8)の場合
unix# setenv LANG 'ja_JP.UTF-8'
unix# setenv NLS_LANG 'Japanese_Japan.UTF8'
unix# setenv NLS_LANG 'American_America.UTF8'

・繁体字中国語(Big5)の場合
unix# unset LANG
unix# setenv LANG 'zh_TW.Big5'
unix# setenv NLS_LANG 'Traditional Chinese_Hong Kong.ZHT16BIG5'

・簡体字中国語(GB2312)の場合
unix# unset LANG
unix# setenv LANG 'zh_CN.EUC'
unix# setenv NLS_LANG 'Simplified Chinese_China.ZHS16CGB231280'

データベースの文字コード

 データベースの文字コードは、データベース作成時に行います。
 多言語対応する場合には、Unicode(UTF8)を指定すると、複数の言語を同時にアクセスできます。
 データベースの文字コードを確認する場合は、以下のSQLを実行します。

SQL# select * from NLS_DATABASE_PARAMETERS where PARAMETER = 'NLS_NCHAR_CHARACTERSET';

PARAMETER                  VALUE
-------------------------- --------------------
NLS_NCHAR_CHARACTERSET     UTF8

データベースへの登録、検索の評価

表の作成

 環境変数NLS_LANGを設定し、Big5からの入出力を可能にします。 TeraTermのフォントを切り替えることで、Big5の表示を可能にしています。

unix# setenv NLS_LANG 'Traditional Chinese_Hong Kong.ZHT16BIG5'

 以下のSQLでテスト用の表(big5)を作成します。 データベースも文字コードは、UTF8となっています。

SQL# create table testtbl (
  id varchar2(8),
  name varchar2(16)
);

 以下のSQLでbig5のデータを挿入します。

SQL# insert into testtbl values ( 1, '星期三' );

 16進ダンプすると、文字コードがBig5であることが確認できます。

0000000 696e 7365 7274 2069 6e74 6f20 6269 6735 insert into big5
0000020 2076 616c 7565 7320 2820 312c 2027 ac50  values ( 1, '星
0000040 b4c1 a454 2720 293b 0a00                期三' );

Big5での検索

 以下のSQLで検索します。

SQL# select * from testtbl;

ID               NAME
---------------- --------------------------------
1                星期三

 16進ダンプすると、文字コードがBig5であることが確認できます。

0000000 4944 0909 204e 414d 450a 2d2d 2d2d 2d2d ID    NAME
0000020 2d2d 2d2d 2d2d 2d2d 2d2d 202d 2d2d 2d2d
0000040 2d2d 2d2d 2d2d 2d2d 2d2d 2d2d 2d2d 2d2d
0000060 2d2d 2d2d 2d2d 2d2d 2d2d 2d0a 3109 0920            1
0000100 ac50 b4c1 a454 0a00                     星期三

CJK漢字の評価

 データベースはUnicode(UTF8)なので、CJK統一漢字コードになっています。  従って、日本語で検索すると、最も近い文字に変換されるはずですので、これを評価します。

GB2312での検索

 環境変数NLS_LANGを設定し、簡体字中国語(GB2312)からの入出力を可能にします。

unix# setenv NLS_LANG 'Simplified Chinese_China.ZHS16CGB231280'

 以下のSQLで検索します。

SQL# select * from testtbl;

ID               NAME
---------------- --------------------------------
1                星期三

 16進ダンプすると、文字コードがGB2312であることが確認できます。

0000000 4944 0909 204e 414d 450a 2d2d 2d2d 2d2d ID    NAME
0000020 2d2d 2d2d 2d2d 2d2d 2d2d 202d 2d2d 2d2d
0000040 2d2d 2d2d 2d2d 2d2d 2d2d 2d2d 2d2d 2d2d
0000060 2d2d 2d2d 2d2d 2d2d 2d2d 2d0a 3109 0920            1
0000100 d0c7 c6da c8fd 0a00                     星期三

日本語(EUC)での検索

 環境変数NLS_LANGを設定し、日本語(EUC)からの入出力を可能にします。

unix# setenv NLS_LANG 'Japanese_Japan.JA16EUC'

 以下のSQLで検索します。

SQL# select * from testtbl;

ID                       NAME
------------------------ ------------------------------------------------
1                        星期三

 16進ダンプすると、文字コードが日本語(EUC)であることが確認できます。

0000000 4944 0909 0920 4e41 4d45 0a2d 2d2d 2d2d ID    NAME
0000020 2d2d 2d2d 2d2d 2d2d 2d2d 2d2d 2d2d 2d2d
*
0000120 2d2d 2d2d 0a31 0909 0920 c0b1 b4fc bbb0      1    星期三
0000140 0a00

日本語(Shift_JIS)での検索

 環境変数NLS_LANGを設定し、日本語(Shift_JIS)からの入出力を可能にします。

unix# setenv NLS_LANG 'Japanese_Japan.JA16SJIS'

 以下のSQLで検索します。

SQL# select * from testtbl;

ID               NAME
---------------- --------------------------------
1                星期三

 16進ダンプすると、文字コードが日本語(Shift_JIS)であることが確認できます。

0000000 4944 0909 204e 414d 450a 2d2d 2d2d 2d2d ID    NAME
0000020 2d2d 2d2d 2d2d 2d2d 2d2d 202d 2d2d 2d2d
0000040 2d2d 2d2d 2d2d 2d2d 2d2d 2d2d 2d2d 2d2d
0000060 2d2d 2d2d 2d2d 2d2d 2d2d 2d0a 3109 0920            1
0000100 90af 8afa 8e4f 0a00                     星期三


Copyright (C)1995-2002 ASH multimedia lab.
mail : info@ash.jp