iOSの絵文字は多くがUTF-8で表すと4byteの文字です。
ということで、MySQL 5.5.3系以降で対応した " utf8mb4 "の文字コードを使ってデータベースに絵文字を突っ込むまでの手順。
MySQL 設定
まず既存のデータベースの文字コードを変えます。
alter database XXXX character set utf8mb4;
続いてテーブルと各カラムも文字コードを変更します。
alter table YYYYYY CONVERT TO CHARACTER SET utf8mb4;
サーバーの設定も変えておきます。
++ character-set-server = utf8mb4
++ skip-character-set-client-handshake
設定反映のためmysqlを再起動。
/etc/init.d/mysqld restart
設定が反映されたことを確認。
mysql -u xxx -p
mysql> status
--------------
mysql Ver 14.14 Distrib 5.5.31, for Linux (x86_64) using readline 5.1
Server version: 5.5.31 MySQL Community Server (GPL)
Connection: Localhost via UNIX socket
Server characterset: utf8mb4
Db characterset: utf8mb4
Client characterset: utf8mb4
Conn. characterset: utf8mb4
クライアント側
FuelPHP 設定
FuelPHPはconfigに1行追加or上書きするだけです。
return array(
'default' => array(
'type' => 'mysql',
'connection' => array(
'hostname' => '127.0.0.1',
'port' => '3306',
'database' => 'XXXX',
'username' => 'aaaaaaa',
'password' => 'bbbbbbb',
),
'charset' => 'utf8mb4', // charaset をutf8mb4に指定して追加
'profiling' => true,
),
);
以上で、既存のアプリケーションから絵文字込みの文字列を登録することができるようになりました!
参考サイト
http://netsket-koshiba.blogspot.jp/2012/11/mysql-4utf8.html
http://tetsuwo.tumblr.com/post/35327902400/mysql-ios-4bytes-utf-8-insert-update
http://d.hatena.ne.jp/hhelibex/20120110/1326179698
http://blog.livedoor.jp/kumagai_nori/archives/52255224.html
http://ngi644.net/blog/
http://oops.xrea.jp/?p=36#mysql32
http://camcam.info/tips/3441
http://d.hatena.ne.jp/erio_nk/20120523/1337757900
https://devsshrsij.wordpress.com/category/tips/