search
LoginSignup
7

More than 5 years have passed since last update.

Organization

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」なのが判るやで!

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

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
What you can do with signing up
7