カテゴリー
Develop

Movable TypeでUnicode絵文字🐭🐮🐯🐰🐲🐍

全盛のご時世にアレですが、Movable typeで絵文字を使いたいという相談を受けたので、対応方法をメモ。

movable type 絵文字」とかでググると以下のような、絵文字画像+の対応方法がヒット。ただ少し古い情報で、ガラケー絵文字の仕様に近い。

今はスマホでUnicodeの絵文字が普及したこともあってか、PCのIMEでもUnicode絵文字が変換候補に出てくる。(例:「おに」>「?」)

今後はPCでもUnicode絵文字の利用は標準になるだろうということで、Unicode絵文字を使う方向で対応。

デフォルトの状態でUnicode絵文字は使えないのか?

まず、デフォルトの状態でUnicode絵文字を使うとどうなるのか?を検証。

記事編集画面でUnicode絵文字を入力すると「リッチテキスト」フォーマットでは絵文字がそのまま表示され、保存+出力したページにも絵文字が表示される場合があるが、再編集すると絵文字のコードが空になっていたり、それ以降のテキストがしたりする。

ただし、©などの記号文字はこのようなは発生しない。両者の実体参照コードを比較すると、不具合が発生するのは4バイト文字(utf8mb4)。

  • © (©)< 3バイト(utf8)
  • ?(👹)< 4バイト(utf8mb4)

以前のMySQLはBMP(基本多言語面)外の文字が使えなかったので、過去にしたDBは「utf8mb4」が使える設定になっていないことが原因と予想。

必要な対応

ということで、4バイト対応に必要な対応は以下の2つ。

  1. ODBCドライのCharactor setの調整
  2. MySQLの該当カラムのCollation(文字コード+ソート順)の調整

1)ODBCドライバーのCharactor setの調整

MySQLのドライバは”mysql.pm”。
格納場所はMTインストールフォルダ内の「/lib/MT/ObjectDriver/Driver/DBD/mysql.pmmysql.pm」
これの「my %Charset =」に「'utf-8′ => ‘utf8mb4′,」を追加。
※元ある「'utf-8' => ‘utf8'」は削除しない

            my %Charset = (
'utf-8'     => 'utf8',
'utf-8'     => 'utf8mb4',
'shift_jis' => 'sjis',
'shift-jis' => 'sjis',
'euc-jp'    => 'ujis',
#'iso-8859-1' => 'latin1'
);

(最後の”euc-jp”の”,”を削除したほうが良い気もするが一旦無視)

2)MySQLの該当カラムのCollation調整

phpMyadminでDBにログインして、以下テーブルのカラムの「照合順序」を「utf8_general_ci」から「utf8mb4_general_ci」に変更。(全体設定を変えてもいいのかもしれないが、トラブルも面倒なので対のみ変更)

  • mt_entry
    • entry_title(タイトル)
    • entry_text(本文)
    • entory_text_more(本文続き)
  • mt_comment
    • comment_text(コメント本文)
    • comment_author(コメント投稿者名)

以上で、対応は完了?

備考

参考

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です