[WordPress] RSSに不正な文字(制御コード)が入り「Input is not proper UTF-8, indicate encoding !」エラーする場合の回避方法

  • このエントリーをはてなブックマークに追加
  • Pocket

attention この記事は2年以上前の投稿になります。
記載された情報が古くなっている可能性がございますので十分ご注意ください。

WordPress の RSS が知らぬ間にエラーしていることがあります。
記事本文にUTF8以外の文字が含まれていことで下記のようなエラーを引き起こします。
rsserr_chrome

もちろん、コピー&ペーストなどで入ってしまうものなら削除して回避することも出来ますが、テーマやプラグインのどこかでマルチバイトの処理が正しく行われない場合では、登録した記事本文に問題が無くとも発生してしまうようです。

外部サービスに RSS を読み込ませているような場合は、知らぬ間にエラーして通知できていない等、大変困ります。
本来は根本的な原因を解決すべきなのでしょうが、特定するにも時間が必要なので、取り急ぎエラーを回避するための方法を覚えておきましょう。

お決まりの functions.php に下記を追加すればOKです。
※私の場合は「functions.php」ではなく「Code Snippets」)で導入してます。

function remove_controlcharacter($content)
{
  return preg_replace('/[^\P{Cc}\n\r]+/u', '', $content);
}
add_filter('the_excerpt_rss', 'remove_controlcharacter');
add_filter('the_content_feed', 'remove_controlcharacter');

※上記の正規表現はPHP5.1.0以降で有効な表記です。

 
今回は特別に上記をプラグイン化してみました。良かったら使ってください。
□ RSSエンコードエラー対策(制御コード除去)プラグイン
> evade_feed_encoding_error.zip (3.27 KB)

※このプラグインは下記のバナーにもある「PHPファイル難読化ツール」で難読化されています。

ネット集客を加速させるWebサイトをWordPressで作る方法
WordPress対応 PHPファイル 難読化ツール

ご訪問ありがとうございます。
参考になりましたら『いいね!』もお願いします。

ITの活用情報を毎週お届けする無料メルマガに是非ご登録ください。

閉じる

ご意見・ご感想をお待ちしております。

いただいた情報は一般公開されません。(入力いただいたメールアドレスにてご返信させていただきます)
また、* が付いている欄は必須項目となりますので、必ずご記入をお願いします。

内容に問題なければ、下記の「コメントを送信する」ボタンを押してください。