北本日記1号です。
今日はブログ運営に関してハマったことがありました。RSSフィードがエラーになってまったく表示されなくなったのです。
この件に関して問題を起こしている原因はわかったので暫定対応は出来ました。でも根本原因がわかっていません。だから恒久対応が済むまで同じ問題が起き続けるでしょう。
今後のために原因と暫定対応の内容をまとめておきます。
目次
概要まとめ
先に概要。こんな事件でした。
【起きたこと】
ブログのRSS(https://kitamoto-nikki.keystar.jp/feed/)にアクセスするとエラーになる。RSSを利用する一切のアプリケーションが正常に機能しない。
【原因】
WordPressで投稿した記事に制御文字が混入していた。今回見つかった制御文字は、RS,BS,US,GS,FSの5種類。複数の記事で同様の問題が見つかった。
【暫定対応】
問題のある記事を特定し、記事から制御文字を除去した。
【根本原因】
制御文字が混入した原因は現状不明。
当ブログ「北本日記」は複数人(北本日記1号、2号)で記事を投稿している。問題のあった記事はすべて2号の投稿した記事であった。2号の記事の書くプロセスまたはアプリケーションに制御文字混入の原因があるのではないか、と推測している。
詳細が気になる方はこの先へどぞー。
起きたこと
当ブログ「北本日記」の右上にはRSSフィードのボタン(オレンジ色のね)があります。
RSSとは
RSSとは、更新情報などの日付やタイトル、その内容の要約などを配信するための技術です。 XML形式で記述されており、専用の「RSSリーダー」を利用する事によって、様々なサイトの更新情報を自動的に取得、閲覧できるようになります。 情報を効率的に取得できる為、近年では企業サイトなどにおいても普及し始めております。
というものでして、RSSを使った便利なアプリもたくさんあります。
だからちゃんと動いていてほしいわけです。
・・・なのに。ぽちっ。
なんじゃこれはーーーーーーー!!! \(^o^)/
エラーの内容:
This page contains the following errors:
error on line 185 at column 25: Input is not proper UTF-8, indicate encoding !
Bytes: 0x1E 0x20 0xE9 0x89
Below is a rendering of the page up to the first error.
わかんね!!(´・ω・`)
原因調査
FEED Validator
先ほどのエラー画面じゃ、どこが悪いかわからないため、ひみつ道具を使うことにします。
こいつです。FEED Validatorです。
FEEDとはRSS。ブログの更新情報。
ValidatorとはValidate + er。Validateは確認するって意味です。
なので、FEED Validatorとはブログ更新情報確認クンってことです。
さて、早速確認してもらいましょう。
じゃん!
おおおおおおおー!やはりエラー。
FEED Validatorもといブログ確認くんは優秀です。なんと問題箇所を教えてくれるのです。エラーで困った困ったと繰り返す最初のヤツとは違いますね。
さて、教えてくれた内容を確認します。
「忘年会という名のタダの夫婦飲み会だけどな」の辺りが問題らしいです。
WordPressで問題の記事を探す
問題の記事を探しましょう。
WordPressで投稿一覧の画面を開きます。
そして、投稿検索を使います。
画面右側のテキストボックスに、先ほど教えてもらったヒント「忘年会という名のタダの夫婦飲み会だけどな」 を入力して検索します。
問題の記事が見つかりました。犯人はお前だ!!!
証拠探しはSublimeTextで
こういうエラーが起きるとき理由はだいたい決まっています。ぜんぶ制御文字のせいなのです!!
とゆーわけで、記事の内容を確認してみましょう。
・・・わかりませんね。
制御文字とは通常目に見えません。隠れて悪さするイヤーなヤツなのです。
そこで!
ひみつ道具第2弾。 テキストエディタのSublime Textです。
▼Sublime Textのコトならこの本がイチバン!
こちらがSublime Textの画面の画面。
画面中央に「RS」って文字がありますね。 白黒反転しているトコロ。これが制御文字。Sublime Textでは制御文字が見えるのですー!素晴らしい!(Macのテキストエディットでは見えないのです・・・)
ここで会ったが百年目。こいつを削除するのです。削除削除削除!!
なんと他の場所にも!削除!!(画面中央のBSです)
ようやくすべての敵を削除し終わりました。
あとは、SublimeTextの内容をWordpressにコピペして記事を更新、っと。
これで平和な世界が訪れるハズ・・・ だった。
制御文字がほかの記事にも残ってた
問題は解消したかな。FEED Validatorで確認します。
すると、どうでしょう。別の箇所に問題があると言ってきます。1回で言ってくれよ!!!
八つ当たりしてもしょうが無い。先ほどと同じ手順で対応します。
すべての制御文字を消し去って、平和が訪れた
地道な対応を続けて、すべての制御文字を消し去りました。
今度こそは・・・とFEED Validatorで確認します。
This is a valid RSS feed.
やりました!北本日記のRSS復活しましたぞーーー(・∀・)
▼北本日記RSS復活の模様
まとめ
知らないうちに紛れ込んでRSSを侵食する制御文字は恐ろしい存在です。
しばらくは定期的に確認して、紛れ込んでいたら削除!ですね。
とは言え、ずっとこんなコトやりたくない(´・ω・`)
制御文字をシャットアウトできる策を見つけたいと思います。
WordPressのプラグインで対応できないかなー(投稿内容から制御文字を除去するフィルターみたいなの)
おまけ:制御文字ファミリー
制御文字について調べた結果と、紛れ込んだ制御文字の魚拓を載せておきます。
▼制御文字調査結果
FSとGSとRSとUS : File Separator(ファイルセパレータ)、Group Separator(グループセパレータ)、Record Separator(レコードセパレータ)、Unit Separator(ユニットセパレータ)
ASCIIでは、単語の集まりがユニットであり、ユニットの集まりがレコードであり、レコードの集まりがグループであり、グループの集まりがファイルであり、ファイルの集まりがテキストである、という情報階層が想定されていた。この階層において、FSはファイルの区切りを表す制御文字であり、GSはグループの区切りを表す制御文字であり、RSはレコードの区切りを表す制御文字であり、USはユニットの区切りを表す制御文字であり、SPは単語の区切りを表す制御文字である。なお、これらの制御文字は1C~20に連続して配置されている。
BS : Back Space(1文字後退)
SPの逆の動作を表す制御文字である。タイプライターやテレタイプでは印字ヘッドを左に移動させる制御文字であり、アクセント記号の合成やアンダーラインに用いられることが想定されていた。すなわち、タイプライターを打つときのように、アクセント記号を打ってからBSで1文字戻して、さらに必要な文字を打てばよいと考えられていたのである。アクセント記号の使い方として想定されていたものの例を図1に示す。
▼制御文字 RS
▼制御文字 FS
▼制御文字 GS
▼制御文字 US
●いろんな制御文字がいますねー(・∀・) 見つけたら徹底削除です。