環境依存文字の取り扱いについて
TeddyBuddy > 環境依存文字の取り扱いについて @ 2016/1/29 16:30 |
---|
baserCMSを利用している方から投稿した画像が表示されないという連絡があったので調べてみたところ、
画像の問題ではなく文章に環境依存文字が入るとその文字以降の投稿内容が消えてしまうことが判明しました。 例えば、「𠮷(「土」に「口」、通称つちよし)」を入れると駄目のようです。「吉」ではもちろん問題ありません。 連絡をしてくれた方の動作環境は以下の通りです。 ■ BaserCMS:3.0.9 ■ スマートURL:OFF ■ PHP:5.4.27 ■ 利用データベース:MySQL 5.6.26 ※設置フォルダ・OSは不明 それで、私のローカルPC環境にて実験してみたところ、「An Internal Error Has Occurred.」の表示になりました。 私のローカルPC環境は以下の通りです。 ■ BaserCMS:3.0.9 ■ スマートURL:OFF ■ 設置フォルダ:サブフォルダ ■ OS:OS X 10.11.3 ■ PHP:5.5.30 ■ 利用データベース:MySQL 5.6.28 それで、2つのいずれの環境もphpMyAdminにてMySQLでのテーブルの参照順序を確認すると 「utf8_general_ci」になっていました。 ネットで調べてみると参照順序が「utf8mb4_general_ci」だと問題が発生しないということらしいのですが、 今更変更するのは難しいかと思われるので、何らかの対策ができないかと思案しているところです。 今のところの対策として、ソースによる投稿で下記のようなJavaScriptを入れました。 -----(ここから)----- <script type="text/javascript"> <!-- document.write(decodeURIComponent("%F0%A0%AE%B7")); // URI形式の文字を表示 //--> </script> -----(ここまで)----- ただ、これだと投稿画面では反映されませんし、実際の投稿者にこのようなコードを入れさせられません。 あと、本当はinnerHTMLかinsertAdjacentHTMLを使いたかったのですがうまく表示できなかったため、 document.writeで表示させました(これはまた別問題かと思いますが)。 一番の希望は「正しい表示ができるようにする」ですが、 もし無理であれば「環境依存文字があったら警告を発する」ができたらと思います。 何か良い解決方法がありませんでしょうか? それか、baserCMSでうまく処理できないものでしょうか? 皆様のご意見を聞かせていただければと思います。 以上、どうかよろしくお願いいたします。 |
beychan > Re: 環境依存文字の取り扱いについて @ 2016/2/1 19:22 |
---|
TeddyBuddyさん、はじめまして。
TeddyBuddyさんがおっしゃっているように、データベースの「utf8_general_ci」がこれらの環境依存文字に対応していないので、 「utf8mb4_general_ci」に変更するのが今のところ望ましい解決方法のように思います。 MySQL 5.6.26とMySQL 5.6.28は「utf8mb4_general_ci」に対応しております。 |