クライアント(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 山 山 定近 定近 定近 定近
* 参考にしたサイトは→ こちら です。
これは赤色の文字例です。
これは青色の文字例です。