a-blog cmsで絵文字を表示させる方法
a-blog cmsで投稿した文章が消える原因と対処法
a-blog cmsで制作したサイトにテキストを新規投稿したところ、最初の5文字だけ反映され、残りの文章がすべて消えてしまった。
「昨日まで投稿できていたのになぜだろう? WAF設定の問題なのだろうか?」とあれこれ考えていたところ、絵文字が悪さをしているのではないかと思い当たった。
そこで、ハートマークなどの絵文字を削除して保存ボタンを押したところ、テキストが正しく表示された。
文章消失の原因は絵文字だったが、この絵文字はa-blog cmsのエントリーで表示できるとのことだった。
絵文字はUnicodeという規格で定義されており、UTF-8では多くの場合4バイトで表現されている。
対処手順は以下のとおりである。まず、config.server.php の13行目にある
define('DB_CONNECTION_CHARSET', null); の null を 'utf8mb4' に書き換える。
この手順により、絵文字が原因で文章が消失する現象が解消する。ただし、この時点では絵文字は「?」マークで表示される。
【参考】
標準の utf8 はMySQLの実装上3バイトまでしか扱えないため、4バイトのUTF-8文字(絵文字など)を保存しようとすると文字が切り捨てられてしまう。utf8mb4(mb4 = most bytes 4)に変更することで、4バイト文字も正しく扱えるようになる。
次に、データベース(phpMyAdmin)を開く。
データベースの文字コードを utf8mb4_general_ci または utf8mb4_unicode_ci に変更する。
さらに、以下のテーブル・カラムも同様に utf8mb4_general_ci または utf8mb4_unicode_ci に変更する。
acms_column: column_field_1
acms_column_rev: column_field_1
acms_field: field_value
acms_field_rev: field_value
acms_fulltext: fulltext_value, fulltext_ngram
acms_entry: entry_title
以上で、絵文字がエントリーに反映されるようになる。
なお、詳細は下記のイラストを参照してください。
【補足】
utf8mb4_general_ci と utf8mb4_unicode_ci のどちらを選ぶかについては、一般的に以下のとおりである。
utf8mb4_unicode_ci … Unicodeの標準規則に基づいた照合順序で、より正確。絵文字を扱う場合はこちらが推奨されることが多い。
utf8mb4_general_ci … 簡略化された照合順序で、処理がやや速いが、厳密さでは unicode_ci に劣る。
したがって、絵文字対応が目的であれば utf8mb4_unicode_ci を推奨する。
投稿:2026年4月7日
安藤秀樹
絵文字

