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