Open Source WEB

端末もMySQLも全部UJISに設定し、'漢字表示'という文字列を16進表示してみよう。

mysql> SET NAMES UJIS;
Query OK, 0 rows affected (0.00 sec)

mysql> SELECT HEX('漢字表示');
+------------------+
| HEX('漢字表示')  |
+------------------+
| B4C1BBFAC9BDBCA8 |
+------------------+
1 row in set (0.02 sec)

xを16進数表記文字列の直前に付加して文字列に変換

さて、今度は、16進表記から文字列に直す方法について考えてみよう。 といっても、考えただけでは分らないので、以下にやり方を示しておく。

mysql> SELECT X'B4C1BBFAC9BDBCA8';
+---------------------+
| X'B4C1BBFAC9BDBCA8' |
+---------------------+
| 漢字表示            |
+---------------------+
1 row in set (0.00 sec)

mysql> SELECT x'B4C1BBFAC9BDBCA8';
+---------------------+
| x'B4C1BBFAC9BDBCA8' |
+---------------------+
| 漢字表示            |
+---------------------+
1 row in set (0.00 sec)

x'文字列の16進数表記' ─→ 文字列

16進数表記になっている文字列の頭に、x(大文字、小文字どちらでも良い) をつけると、文字列になる。

mysql> SELECT x 'B4C1BBFAC9BDBCA8';
ERROR 1054 (42S22): Unknown column 'x' in 'field list'

しかし、このように、x と 16進数表記の文字列の間に空白が存在するとエラーになる。


0xで始まる16進表記で文字列になる

もう1つの方法は、0xを頭につけた16進数表記を用いるものである。

mysql> SELECT 0xB4C1BBFAC9BDBCA8;
+--------------------+
| 0xB4C1BBFAC9BDBCA8 |
+--------------------+
| 漢字表示           |
+--------------------+
1 row in set (0.00 sec)

しかし、この場合、先頭の 0x を 0Xにすると、以下のようにエラーになる。

mysql> SELECT 0XB4C1BBFAC9BDBCA8;
ERROR 1054 (42S22): Unknown column '0XB4C1BBFAC9BDBCA8' in 'field list'

0x文字列の16進数表記 ─→ 文字列


ということで、2通りのやり方で、16進数表記から文字列への変換を示した。 他にもやり方が無いではないが、これら2つの好きな方を使えばよいと思う。


戻る:HEX()でキャラクタセットの調査 (その1)

次へ:バイト列のキャラクタセット指定をするintroducer


フィードバック:

Name:
Comment:

There is no comment.

このサイトは、 IPA の「平成15年度オープンソフトウエア活用基盤整備事業」 の委託事業として開発されたKahuaで試験的に運用しております。

Copyright (c) 2004-2007 株式会社タイムインターメディア About Us