PR(記事内にアフィリエイト広告が含まれています)
スポンサーリンク
Nucleus

はてなRSSでの試行錯誤

はてなRSSの謎を書いた時点では解決したと思ってたんですが、最近ははてなRSSに登録が出来なかったり、出来たとしてもちゃんと巡回してもらえなかったり、文字化けしたり、と不具合があるようです。
結論から申し上げますと、今回は解決しなかったので更新捕捉にははてなアンテナを使うか、はてなRSS以外のRSSリーダーを使っていただいた方が現時点では無難だと思います。
とはいえ、今回作業していて意外なところで収穫があったりしましたので、ちょっとメモしておきます。


FEED Validatorに当サイトのRSSをかけてみると、
Your feed appears to be encoded as “UTF-8”, but your server is reporting “EUC-JP”
と表示されるのがかなり気になってました。他の無料系サーバーを使ってみると大丈夫だったりしたんで、てっきりDBのキャラセット問題かと思っていましたが、それは間違いだったようです。
というのも同じくRocket3サーバーにてNucleusを使われている方のRSSだと、FEED ValidatorでもはてなRSSでも正常に動作するからです。DBサーバーは一つしかないので環境面に差は無いわけですから、単純に自分のサイトの何かが間違っているのだろう、ということになりました。
いろいろ作業するたびに例のエラーが出たり出なかったりしたんで困惑していたんですが、単純にRSS用のphpファイルをUTF8Nで保存してアップしたら解決……と思いきや、キャッシュをクリアして試すと同様のエラーに。キャッシュプラグインを使うとUTF8が勝手にEUCになるという話も出ているので、その辺りが原因かもしれません。というわけではてなRSSではうまく動いてません。
何か他にも例の方と差が無いかな、と思って例の方のサイトのソースを見比べてたら、文書型宣言の位置が間違ってたのに気づきました。いろいろ楽しようとした結果、文書型宣言をファイルの文頭ではなくHEADのあとに記述してました。これでもFireFoxなどは動いてたので見逃していたんですが、IEだと逆に違う挙動を示します。というか文書型宣言を最初に記述しないと、正しい挙動を示さないようです。
文書型宣言を最初に記述してないせいでCSSをハックして分岐させてた部分があったんですが、それらが殆ど不要になりました。知ってる人には当たり前のことだったと思うんですが、適当に場当たり的にやってきてたんで「IEだけ表示が変だ!」と騒いでいたようです。これに限らず基本は順序良くきっちりおさえておかないと、と思いました。
それとはまた別に知ったのですが、下記を記すとIEで表示にバグが生じるようです。このためIEだけハックしてたんですが、ハックしない方が楽なんで下記は敢えて記さないことにします。Another HTML-lintでは減点対象みたいですが、しょうがない。
<?xml version=”1.0″ encoding=”EUC-JP”?>
はてなRSSについてはもう少し調べてみようと思います。こういう風に自分の間違いにまた気づくとも限りませんし。

コメント

タイトルとURLをコピーしました