制御文字に注意!
私はトラブルは勉強するチャンスだと思っているのだが、So-net blogのトラブルのおかげでたくさんのことを学んだ。そして、今日も新たに一つ学んだ。
『ブログの制御文字について - 教えて!goo』に次のような質問があった。
ブログの制御文字について
はじめて質問させていただきます。
ライブドアブログのページをインフォシークに登録しようとしましたが、「制御文字があるため出来ません」との表示がでました。
見た限り、問題がありそうなものは見当たりません。
他のページは登録できているのに・・
制御文字とはどのようなものでしょうか?
教えていただけますと幸いです。よろしくお願いします。
(ブログの制御文字について - 教えて!goo)
制御文字についてはGoogle等で検索して調べてほしい。どうして制御文字が生じたかについて『ブログの制御文字について - 教えて!goo』の回答に次のように書いてある。
何らかの理由で制御文字が混じり込んだのでしょう。
(ブログの制御文字について - 教えて!goo)
何らかの理由で混じり込んでしまうらしい。Googleで検索して見つけた『RSSをパースするときの制御文字への対処 - public static void main』には次のように書いてあった。
原因は、絵文字を使っていたり、文字化けしたりといったことによって制御文字が挿入されたためのようです。
(RSSをパースするときの制御文字への対処 - public static void main)
絵文字が入力できるSo-netでも起こりそうである。
『ブログの制御文字について - 教えて!goo』に戻る。
エディタによっては、制御文字を'・'や'?'に置き換えて出力するものもありますが、空白でそれと分からないときが多いです。
(ブログの制御文字について - 教えて!goo)
制御文字は他の文字に置き換わってしまって分かりにくいらしい。実は、置き換わらず、表示されない(見えない)こともある。
この制御文字は『ブログの制御文字について - 教えて!goo』の質問者のようにトラブルの原因になる。紛れ込んでしまったら削除しなければならない。どのように探すか。
で、登録できないトラブルの対策ですが、
まず'・'や'?'など妙な記号が混じっていないかもう一度よく確かめましょう。
次に、文字間にひっそりと混じりこんでいる半角スペースを疑いましょう。
それらを削除して、登録できるようになれば、そいつが犯人です。
それも見つからなかったら最後の策です。
(ブログの制御文字について - 教えて!goo)
登録内容を前半と後半に2分割します。どちらかが登録できれば、犯人の居所は残りの半分に絞り込まれたことになります。分割して登録可能かの試行錯誤を数回繰り返し、犯人を追い詰めていきます。手間ですが、眺めているだけよりは確実で、早く解決します。
一部を強調表示させてもらった。トラブルシューティングに慣れた専門家らしい手法である。私も同じような手法を使うことが多い。
しかし、制御文字を探す他の方法がある。So-net blogのようにインターネット上で見ることができてURLが存在するページであれば、『Another HTML-lint gateway』を使って見つけることができる。エラーの多いページだと紛れ込んでしまうが、例えば次のように表示される。
1: line 11: 制御文字 `^T` が含まれています。 → 解説 133
『解説 133』を読むと『HTMLをURLでなく、DATA領域に指定した場合は、このエラーはチェックされません。』とのことなので、このエラーが生じるページ(『制御文字を含むページのサンプル』)を作ってみた。Firefoxだと制御文字が見えないが、IE6なら「・」に置き換わって見える。このページのURLを『Another HTML-lint gateway』でチェックすると、上記のようにエラーを見つけてくれる。
さて、ブログに制御文字が含まれていたらどうなるか。So-net blogの真似をしてRSSフィード(『ctrl-character.rdf』)を作ってみた。制御文字が含まれていると、正しく機能しない。『Feed Validator for Atom and RSS』で確認することもできる(ctrl-character.rdfの確認結果)。RSSフィードから制御文字を削除したもの(『ctrl-character_.rdf』)も作ってみた(ctrl-character_.rdfの確認結果)。RSSフィードを作る際には制御文字を削除した方が良さそうである。
そう言えば、『Q&A: 「読んでいるブログ(RSS)」が更新通知されません』に次のように書いてあった。
登録しているブログの記事内にシステムが判別できない特殊な文字が含まれているため、RSS情報が取り込めなくなっている可能性があります。
(Q&A: 「読んでいるブログ(RSS)」が更新通知されません)
関係あるかもしれない。
文字コードが別なサイトの外部コンテンツをそのまま取りこんでいませんか?
例えばサイドバーに人気ランキングがあったり、文字化けで広告を挿入していたり、様々です。
IEで見ると自動補正されて「何とも無い」ように見えるので、(ヘッダが違うなどと)サイト側に苦情を言っても修正してくれない場合も多いです。
その代わり「そのブラウザではなくIEでご覧下さい」と推奨されるんだな、これが。
あとは、改行コードが違うMacとか?
by itochan (2008-06-06 11:54)
itochanさん、コメントありがとうございます。
実は私のブログに制御文字を見つけたわけではなくて見ず知らずの人のサイトで見つけたので、どのような原因で入ったのか分かりませんが、見えないので、やっかいだなと思いました。
それと、サンプルの制御文字はMacのエディタで見たらリンゴマークでした。最初は、その人がMacでリンゴマークを入力したのかと勘違いしてました。でも違ったようで…。(^^;) Macのエディタで見ると確認しやすかったです。
あっ、MacとWindowsの改行コードの違いですが、これまでの所、問題なさそうです。
自分に届いたメールの文章や他のサイトの文章や制御文字を入力できるエディタからコピー&ペーストすると、知らずに制御文字を入力してしまうかもしれません。
by 正己 (2008-06-06 15:17)