お仕事メモ

baserCMSで😄を使いたい場合の最適解
2016/12/02

baserCMSで、絵文字を使いたい場合の最適解を考える
 



いきなり正解書いておくと、「DatabaseでPostgreSQLを使う」です。

baserCMSは、SQLite,MySQL,PostgreSQLのDatabaseが選択できますが、(SQLiteは検証してないので今回パスで)
MySQLで絵文字を管理画面等から登録しようとすると上手くいきません。原因は文字コードの設定です。

MySQLで絵文字を取り扱うのであればutf8mb4という文字コードセットを利用する必要があります。

utf8mb4は、4バイトを扱えるutf8、つまりは絵文字が扱えるutf8になります。

現在多くのレンタルサーバ等では、MySQLのデフォルトの文字コードは utf8 であり utf8mb4ではありません。
また、utf8mb4の文字コードセットは、MySQL5.5.3以上での利用となります。

そのためそもそもレンタルサーバで利用する場合は、まずMySQLのバージョンの問題を乗り越え
さらに、utf8で作成されるテーブル等々をutf8mb4にしつつ(baserCMSだとインストーラの改修が必要)、
CakePHPのdatabase.php のDBへのアクセス設定で encoding をutf8mb4に設定してあげる必要があります。

上記でも上手くいくかは、Database自体の設定のからみもあり、確実なものではありません。
本来、きちんとしたいのであれば、「create database 」とか MySQLの設定ファイル my.conf 等から
あわせて見直してあげる必要がでてきます。

そこまでいくと、baserCMSの領域でどうのこうのするのは難しくなりMySQLで絵文字を使えるという
状態を提供するのが困難になっています。

さらに、それを乗り越えても、寿司ビール問題とかはらんでますしね。

という事で、baserCMSで、顔文字使いたければPostgreSQLをつかえという結論です。
PostgreSQLならデフォルトのインストールで、顔文字を使える状態です。これは、PostgreSQLの
UTF8が、デフォルトで4バイト対応だからになります。

ちなみに、「どうしてMySQLのutf8は3バイトなんだ」という事に突っ込みを入れる気はないのであしからず。

文字コードの問題等々は歴史的事情等も複雑にからんでおり、後方互換も考えるとその時々の判断にすごく
苦労したのだと思います。MySQLもPostgreSQLも素晴らしいRDBであり、両方とも愛してくれたらうれしいです。


というわけで、baserCMSも、下記のようなチケットが上がっておりまが、(自分が作ったのですが・・)
MySQLの utf8mb4に対応するか

こちらの実装は当面しない予定です。絵文字使いたい人は、PostgreSQLを使ってくださいね。

  😃 😀 😊 😉 😍 😘 😚 😗 😙
😜 😝 😛 😳 😁 😔 😌 😒 😞 😣 😢
😂 😭 😪 😥 😰 😅 😓 😩 😫 😨 😱
😠 😡 😤 😖 😆 😋 😷 😎 😴 😵 😲
😟 😦 😧 😈 👿 😮 😬 😐 😕 😯 😶
😇 😏 😑 👲 👳 👮 👷 💂 👶 👦 👧
👨 👩 👴 👵 👱 👼 👸 😺 😸 😻 😽
😼 🙀 😿 😹 😾 👹 👺 🙈 🙉 🙊 💀
👽 💩 🔥 🌟 💫 💥 💢 💦 💧 💤
💨 👂 👀 👃 👅 👄 👍 👎 👌 👊
👋 👐 👆 👇 👉 👈 🙌 🙏
👏 💪 🚶 🏃 💃 👫 👪 👬 👭 💏 💑
👯 🙆 🙅 💁 🙋 💆 💇 💅 👰 🙎 🙍
🙇 🎩 👑 👒 👟 👞 👡 👠 👢 👕 👔
👚 👗 🎽 👖 👘 👙 💼 👜 👝 👛 👓
🎀 🌂 💄 💛 💙 💜 💚 💔 💗 💓
💕 💖 💞 💘 💌 💋 💍 💎 👤 👥 💬
👣 💭

 

baserCMS admin
PAGE TOP