0
Help us understand the problem. What are the problem?

posted at

updated at

baserCMS LOLIPOP! MySQL5.7の文字コード/照合順序

先日、「ロリポップ!レンタルサーバー」で利用できるデータベース(新規作成時)がMySQL5.7(現時点で5.7.36)になりました。
スクリーンショット 2022-02-17 9.11.15.png

レスポンシブ対応のテンプレートなどを使用してサイトを公開した場合、当然のようにスマホやタブレットからアクセスされるケースは多くなるわけですが、アクセスの解析データを見ても、それらのアクセス数はサイト全体の50%を下回ることは昨今もうなくなりました。
そうなってくると、不特定のサイト閲覧者によって問い合わせフォームやブログコメント欄から4バイトの絵文字キャラクターが入力されるケースも当然多くなってきます。

これまでLOLIPOP!で提供されていたMySQL5.6のサーバー側の文字コードは、標準で utf8 になっていたため、作成したDBの文字コードも基本的に utf8 となり、4バイトの絵文字キャラクターを含んだデータをDBに格納しようとする段階で絵文字キャラクター自体が正しく格納されないばかりか、絵文字キャラクター以降の全ての文字列がDBには格納されないという問題が起こっていました。

Qiita用.jpg

今回アップデートされたMySQL5.7を使ってbaserCMS(4.5.1以降)をインストールした場合、
上図のように、基本的な文字コードは、utf8mb4 、テーブル(カラム)の照合順序は、utf8mb4_general_ci になります。
これによって、主にスマホ、携帯などによって、①問い合わせフォームやブログコメント欄から入力される可能性のある4バイトの絵文字の文字化け、②絵文字以降の入力情報の欠落などの問題は、基本的に解消できるようになりました。

ですが、現時点の「ロリポップ!レンタルサーバー」で提供されているサイト作成ツールの「baserCMS簡単インストール」を利用してインストールした場合は、baserCMSのバージョンが4.4.7のため、テーブル(カラム)の照合順序は、一部を除いて「utf8_general_ci」となりますので、(事情は、「fix #1055 【インストーラー】MySQLを利用してインストールすると照合順序が複数混在する場合がある問題を解消」 )この場合は、上記 ① ② の問題解決に必要なカラムの照合順序を個別に「utf8mb4_general_ci」に変更することで、比較的容易に解消することができます。

また、/app/Config/database.php'encoding' => 'utf8''encoding' => 'utf8mb4' に変更することで、BaserCMS側でも絵文字を表示できることも確認しています。

Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
Sign upLogin
0
Help us understand the problem. What are the problem?