|
必聴講座ご紹介 Cloud Days Tokyo 2012 エムオーテックス Cloud Days Tokyo 2012 ヴイエムウェア Cloud Days Osaka 2012 アマゾン データ サービス ジャパン |
|
| 内容 | 文字化けとの関連 | |
|---|---|---|
| 新機能 | サブクエリーのサポート | |
| Unicode (utf8 および ucs2)サポート |
|
|
| 文字コードの自動変換機能の追加 |
|
|
| 変更点 | カラム,テーブル,およびデータベースごとにキャラクタセットを定義 |
|
| カラム(フィールド)の定義がバイト単位から文字単位に変更 | ||
| timestamp 型の表示フォーマットが変更 | ||
| パスワードの保存形式が変更 |
上記の中で,文字コードに関係する項目が3つある。これらを順番に解説する。
MySQL 4.0では,2種類の日本語文字コードしかサポートしていなかった。しかし,MySQL 4.1からUnicodeが追加され,大きく分類すると3種類の文字コードが使用可能になった。
表2●MySQLのサポートする日本語文字コード
| シフトJIS | EUC-JP | Unicode | |
|---|---|---|---|
| 4.0 | sjis | ujis | |
| 4.1 | sjis / cp932 | ujis | utf8/ ucs2 |
| 5.0 | sjis / cp932 | ujis /eucjpms | utf8/ ucs2 |
つまり,MySQL4.0では,2種類の文字コードしかないので,文字化けが発生すれば,もう一方の文字コードで試せばよかった。しかし,MySQL5.0では,6種類の文字コードがあるため,文字化けが発生する機会が増えてしまった。
MySQL 4.0では,サーバー全体で文字コードの定義を行った。しかし,MySQL 4.1では,カラム(フィールド),テーブル,データベース毎に文字コードを設定可能になった。
その関連として,カラムの定義で文字列型に設定する場合,char(X)にて指定する数値がバイト数ではなく文字数に変更されたのだ。そのため,char(10)は,文字コードによって10バイト,20バイト,30バイトと物理的なバイト数が異なるようになった。