スマートフォンオプションを入れる

| コメント(0)

 Movable Type 5.2の提供が開始されたのを受けて正式なリリース版をインストールしてみた。すでにベータからRC1そしてRC2とテストしているからこれは問題ない。ついでにSmartphoneOption-2.0もダウンロードして入れてみた。スマートフォンオプションのインストール自体は問題なく終了。iOSシミュレータでログイン、スマホ向けに最適化された管理画面を確認。次に新規スマートブログを作成、テーマのインストールに進んだところで壁にぶち当たった。「公開プロファイルを設定」からアーカイブのみダイナミックパブリッシングを選択、さらにメインページと最新記事のフィードもダイナミックにして再構築。サイトを表示してみると、見事に文字化け。これへの対処に延々ハマってしまった。DynamicMTML Bootstrapperが.mtview.phpを出力することからphpのマルチバイト関数が問題であるのは明らか。PowerCMSの開発元であるアルファサード社のブログにあるFAQをチェックすると「PHPのmbstringモジュールが利用できない」のが原因であるという。利用しているさくらインターネットのレンタルサーバのコントロールパネルからphp.iniを設定してみるが全然反映しない。ルート直下にphpinfoファイルを作成してブラウザからアクセスすると、php.iniをいじる毎に設定は変更されている。WEBで検索するとこれでいけるよという話がたくさん転がっているが、うちのは解決しないのだった(笑)。
MySQLにログイン、コマンドプロンプトを実行。

mysql> show variables like 'char%';
+--------------------------+----------------------------------+
| Variable_name | Value |
+--------------------------+----------------------------------+
| character_set_client | ujis |
| character_set_connection | ujis |
| character_set_database | utf8 |
| character_set_filesystem | binary |
| character_set_results | ujis |
| character_set_server | ujis |
| character_set_system | utf8 |
| character_sets_dir | /usr/local/share/mysql/charsets/ |
+--------------------------+----------------------------------+
8 rows in set (0.01 sec)

 データベースとシステムはutf-8だが残りはすべてujisつまりEUC-JPということになる。全ブログ文字化けならDBの文字コード変換を考えるところだが、複数ある他のブログは問題ない。DBをいじるのはあまりにリスキーといえる。ところでさくらサーバのファイルマネージャーでphpファイルを開くと文字コードがEUC-JPでこれは変更できない。phpMyAdminでDBにログイン、mtで使っているテーブルの照合順序がutf8_general_ciであることを確認する。utf-8をEUC-JPに変換するしかない。あれこれ探し回って小粋空間さんのCharsetEncoder プラグインにたどり着く。「管理画面の文字コードはデフォルトのUTF-8のままとし、ウェブサイトまたはブログで出力するページのみ、指定した文字エンコーディングで出力」できるというありがたいプラグインだ。ブログ別、あるいはテンプレート別にエンコードを指定できる。これをシステムのプラグインに入れて詳細設定、さらにphp.iniでmbstringの組み合わせを変えて試してみた。さらにブラウザの環境設定でもエンコードを統一。すると、やっとのことで文字化けが解消された。php.iniの設定例は次の通り。テンプレートの文字エンコードもEUC-JPに合わせてある。
register_globals = Off
display_errors = On
magic_quotes_gpc = On
language = "Japanese"
default_charset = "EUC-JP"
mbstring.internal_encoding = "EUC-JP"
mbstring.encoding_translation = Off
short_open_tag = Off
date.timezone = "Asia/Tokyo"

スクリーンショット 2012-10-06 9.44.32.png スクリーンショット 2012-10-07 9.24.35.png scr_01.png src_02.png

コメントする

2017年9月

          1 2
3 4 5 6 7 8 9
10 11 12 13 14 15 16
17 18 19 20 21 22 23
24 25 26 27 28 29 30

アーカイブ

Powered by Movable Type 6.3.3