Edited at

FuelPHPからiOSの絵文字をMySQLにぶち込むまで

More than 5 years have passed since last update.

iOSの絵文字は多くがUTF-8で表すと4byteの文字です。


iOS絵文字 http://punchdrunker.github.io/iOSEmoji/table_html/


ということで、MySQL 5.5.3系以降で対応した " utf8mb4 "の文字コードを使ってデータベースに絵文字を突っ込むまでの手順。


MySQL 設定

まず既存のデータベースの文字コードを変えます。

alter database XXXX character set utf8mb4;

続いてテーブルと各カラムも文字コードを変更します。

alter table YYYYYY CONVERT TO CHARACTER SET utf8mb4;

サーバーの設定も変えておきます。


/etc/my.cnf

++ 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/