ねら~ITエンジニア雑記

やきうのお兄ちゃんが綴るOracle Databaseメインのブログ

Oracle Database の DUMP関数 と CONVERT関数 で 文字列のバイトコードを調べる。

はてぶコメントで

【「野球」に対応するEUC文字コードは「cceeb5e5」なのが判らん。】

と頂いたので、書くやで彡(゚)(゚)

文字コードバイトコードは、Oracle Database だと DUMP関数 で確認できます。
AL32UTF8環境で「野球」のバイトコードを調べると↓(e9878ee79083)のようになります。

SET LINESIZE 170
SET PAGESIZE 100
COLUMN PARAMETER FORMAT A30
COLUMN VALUE FORMAT A30
SELECT * FROM V$NLS_PARAMETERS WHERE PARAMETER LIKE '%CHARACTERSET%';

PARAMETER                      VALUE                              CON_ID
------------------------------ ------------------------------ ----------
NLS_CHARACTERSET               AL32UTF8                                0
NLS_NCHAR_CHARACTERSET         UTF8                                    0

-- '野球' の AL32UTF8 の バイトコード
SELECT DUMP('野球', 16) FROM DUAL;

DUMP('野球',16)
-------------------------------
Typ=96 Len=6: e9,87,8e,e7,90,83

文字コードの変換はCONVERT関数で出来るので、
CONVERT関数とDUMP関数を組み合わせると「野球」のバイトコードが確認できます。

-- '野球' の JA16EUC の バイトコード
SELECT DUMP(CONVERT('野球', 'JA16EUC' , 'AL32UTF8'), 16) FROM DUAL;

DUMP(CONVERT('野球','JA1
------------------------
Typ=1 Len=4: cc,ee,b5,e5

-- '野球' の JA16SJIS の バイトコード
SELECT DUMP(CONVERT('野球', 'JA16SJIS', 'AL32UTF8'), 16) FROM DUAL;

DUMP(CONVERT('野球','JA1
------------------------
Typ=1 Len=4: 96,ec,8b,85

「野球」に対応するバイトコードは、JA16EUCだと「cceeb5e5」、
JA16SJISだと「96ec8b85」なのが判るやで!

野球元年や!彡(゚)(゚) (しつこい) マニュアルは↓やで。

Oracle Database SQL言語リファレンス 12cリリース1 (12.1) B71278-10
DUMP
http://docs.oracle.com/cd/E57425_01/121/SQLRF/functions063.htm#i77278

CONVERT
http://docs.oracle.com/cd/E57425_01/121/SQLRF/functions041.htm#i77037

Qiitaにも書いたやで!彡(^)(^)

Oracle Database の DUMP関数 と CONVERT関数 で 文字列のバイトコードを調べる。
http://qiita.com/ora_gonsuke777/items/c410f75f0a7a3dfd1872