32
30

More than 5 years have passed since last update.

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

Last updated at Posted at 2013-07-29

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/

32
30
1

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
32
30