クライアント(str1)とMySQLサーバ(str2)の文字コード MySQLの練習 free38
Thursday,June,20,2013
概略があまりつかめてませんがメモします。
BINARY型について
クライアントが保存する文字コード(カムラ?)をMySQLサーバに送信すしサーバがデータ保存するメカニズムについて。
山山クライアントcp932→ |データ8E52 E5B1B1 ←*MySQRサーバUTF8のbinaryとchar
定近定近クライアントcp932→ |データ92E88BDF E5AE9AE8BF91 ←*MySQRサーバUTF8のbinaryとchar
定近_定近_クライアントcp932→|データ92E88BDF2 E5AE9AE8BF91 ←*MySQRサーバUTF8のbinaryとchar
mysql> show databases;
mysql> use test; *メッセージDatabase changedが表示される。
mysql> show tables; *テーブル一覧が表示される。
○BYTE(5)型とCHAR(5)型のカラムを持つテーブルを作成する。
mysql> create table test18(str1 binary(5), str2 char(5));
mysql> insert into test18(str1, str2) values('山','山');
mysql> insert into test18(str1, str2) values('定近','定近');
mysql> insert into test18(str1, str2) values('定近 ','定近 '); *半角スペースを入れた
mysql> insert into test18(str1, str2) values('定近 ','定近 '); *全角スペース入力失敗
○「test18」テーブルの構造を見る。 カラムの設定が見れます。桁数、NULL値が無い場合の表示方法など
mysql> describe test18;
mysql> show columns from test18; 同じ結果
Field Type Null Key Default Extra
str1 binary(5) YES NULL *BINARY型
str2 char(5) YES NULL
○作成したテーブルの定義を確認してみる。
mysql> show create table test18\G
Table: test18
Create Table: CREATE TABLE 'test18'( *ここはサーバの文字コードの設定だな クライアントはcp932のはずだから
'str1' binary(5) CHARACTER SET latin1 DEFAULT NULL, *ここはサーバの文字コードの設定だな BINARY型カムラの形に文字コードで一応理解しておくことに。
'str2' char(5) CHARACTER SET ucs2 DEFAULT NULL, *ここはサーバの文字コードの設定だな カムラの形に文字コードで一応理解しておくことに。
)ENGINE=InnoDB DEFAULT CHARSET=utf8 *ここはサーバの文字コードUTF8だよね。
1 row in set (0.00 sec)
○テーブルの中身の表示
mysql> select * from test18;
str1 str2
山 山
定近 定近
定近 定近
○BINARY型のカラムに格納する時は、送られたきたデータをそのまま格納する。*クライアント(str1)とMySQLサーバ(str2)の文字コードの表示かな?
mysql> select hex(str1), hex(str2) from test18;
hex(str1) hex(str2)
8E52000000 (山クライアントcp932→データ8E52) E5B1B1 *クライアントcp932 MySQRサーバUTF82>
92E88BDF00 (定近クライアントcp932→データ92E88BDF) E5AE9AE8BF91 *クライアントcp932 MySQRサーバUTF82>
92E88BDF20 (定近_クライアントcp932→データ92E88BDF2) E5AE9AE8BF91 *クライアントcp932 MySQRサーバUTF8
mysql> select str1, str2 from test18; *テーブルの中身の表示とにている
str1 str2
山 山
定近 定近
定近 定近
* 参考にしたサイトは→ こちら です。
これは赤色の文字例です。
これは青色の文字例です。