MarsEditでWordPressを投稿時に起きる文字化けの解消法(サニタイズ問題)

MarsEditでWordPressを投稿時に起きる文字化けの解消法(サニタイズ問題)

wordpress サニタイズ 文字化け 解消法
目玉焼きはサニーサイドアップの @georgek5555 です。

さて、技術系の記事が続きますが、今回はMarsEditでWordPresを更新する時にたまにおきる文字化けの解消法について。

勝手に文字化けする?サニタイズ問題解消法

筆者はプログラマーというわけではないので、専門的な記述とか用語が間違っていたらすいません。
たまにWordPressをMarsEditで書いていたら、記事をアップした後に勝手にコードなどの記述やHTMLタグがバッキバキに文字化けすることがあります。
色々調べたらこの現象を『サニタイズ』というらしいのですが、特に『”』や『>』などが勝手に書き換えされて文字化けみたいになっちゃうってやつです。
とにかくまともに読めませんし、下手したら全文がぐっちゃり文字化けしちゃったりするので、これどうにかならないかな?と色々調べてなんとか解決したので、筆者がやった解決方法を書いておきます。

PHPのバージョンを5.3以上にしましょう

まず、この問題はそもそもMarsEditに原因があるというわけではないということ。
MarsEditで投稿するとHTMLがサニタイズしてしまう理由について |

こちらの記事を読む限りまずPHPのバージョンが5.2だと起きるということが判明。
ということで、PHP5.3以上にバージョンをアップしてください。

LibXML2 Fixというプラグインを入れましょう

さきほどの紹介したリンク先にも書いてあったプラグインです。
実は筆者PHP5.3でした。ということでバージョンアップしただけでは駄目だということでつまづきました。
そこで、下記のプラグインを入れてみました。
WordPress › LibXML2 Fix « WordPress Plugins

ただし、このプラグイン2年以上更新されていないので、セキュリティ的に問題がある可能性があります。
これはあくまでも自分のやり方なのでご利用は自己責任にて。

プラグインを少しいじります

そしてこちらのプラグインを入れたら、少しいじる必要があるようです。
HTMLタグ、サニタイズ現象に決着! | MABUHAY!!

どうやらプラグインを入れただけでは100%ではないようで、プラグインの編集で書き換えが必要なようです。
プラグイン編集画面で、『libxml2-fix/libxml2-fix.php』を開いて、

		$HTTP_RAW_POST_DATA = str_replace( '<', '<', $HTTP_RAW_POST_DATA );
		$HTTP_RAW_POST_DATA = str_replace( '>', '>', $HTTP_RAW_POST_DATA );
		$HTTP_RAW_POST_DATA = str_replace( '&', '&', $HTTP_RAW_POST_DATA );

となっているところの次に1行追加したこんな風にしてください。

		$HTTP_RAW_POST_DATA = str_replace( '<', '<', $HTTP_RAW_POST_DATA );
		$HTTP_RAW_POST_DATA = str_replace( '>', '>', $HTTP_RAW_POST_DATA );
		$HTTP_RAW_POST_DATA = str_replace( '&', '&', $HTTP_RAW_POST_DATA );
		$HTTP_RAW_POST_DATA = str_replace( '"', '"', $HTTP_RAW_POST_DATA );

これはつまり、『”』などの記号を10進表記としてちゃんと表示するということのようです。

あくまでも自己責任で

これで筆者はとりあえず問題解決しました。
ただし、このやり方はプラグインをいじったり、そもそもプラグインが古かったりするので、あくまでも自己責任にて行ってくださいね。
とりあえずこれでぐっちゃぐちゃにならなくなってよかったです。

以上、白熱する落合南小学校体育祭会場から @georgek5555 がお届けいたしました。
一旦スタジオにお返しいたします。