Chat (Lingr.com)
Informaiton
Daily
Column
- MySQL日本語の旅(5/1)
- アクセス向上秘伝(5/9)
- 一風変ったHaskellλ門(6/13)
- SICP Answer Book (5/31) 問題3.26追加
Zope Solution
Extra
アーカイブ
OSS案内所
Site Info
関連リンク
端末も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つの好きな方を使えばよいと思う。
次へ:バイト列のキャラクタセット指定をするintroducer
フィードバック:
There is no comment.