186::Beta 旧「はてなダイアリーへの要望」を淡々と記録するよ@beta

2004-03-09

[][] http://d.hatena.ne.jp/walkeri/20040309#p1

編集時のタグ漏れ?

昨日の日記、書き込み時に最後の(自動的に書かれる)/Pタグが壊れたらしく、編集できなくなってしまった。編集画面のテキストボックスに、日記の本文に続けてコメント部分やリファラ、ボタンのHTMLまで表示されて、それより下の部分が出てこない。つい最近吉井さん(d:id:THOR)の日記でも同様の症状を見たばかりだから、何らかの不具合だと思われます。というわけではてなダイアリーへの要望:調査と修正どうか宜しくお願い申し上げ候。

  • 追記:壊れてるのは/Pじゃなくて/textareaタグかも。
http://d.hatena.ne.jp/walkeri/20040309#p1

d:keyword:はてなダイアリーFAQ「日記を書く」にありますな。はてなダイアリーFAQ「日記を書く」 - 日記が文字化けして編集できなくなった(文字化けの日記修正方法)

[][][] http://d.hatena.ne.jp/rna/20040309#p1

RSSがエラーになる

たとえばこんなの:

XML Parsing Error: undefined entity

Location: http://d.hatena.ne.jp/contractio/rss

Line Number 222, Column 86: <description> -原文:Im Laufe der menschlichenEntwicklung steigt die soziale Komplexit&auml;t, das hei&szlig;t die ...</description>

XML では HTML にあるウムラウトとかの実体が定義されてませんのでエラーになります。なんとかして欲しいっす。対処方法としては、二通り:

  • 実体をユニコード文字に展開して RSS は UTF-8 で配信
  • RSS 内に DTD の内部サブセットを作って、そこに HTML の実体定義を全部書いておく

前者が無難。最近の Perl ならなんとかなるっしょ。後者の方が実装は楽そうだけど HTML の実体っていっぱいあるから RSS のサイズがでかくなってマズー。ちなみに XML 1.0 の仕様では「non-validating perser は DTD の外部サブセットや外部パラメタ実体を読まなくてよい」ということになっているので、それらの実体定義を別ファイルに切り離すことはできません。

あ、他にも、

  • 実体はてきとーな文字(?とか)に置き換えちゃう
  • & を全部 &amp; に置き換えちゃう

って手もあるか。後者の方が無難。正しい対処ではないけどエラーで全然読めないよりはマシだし。これなら 1 行追加で対応できそうなので是非やって欲しいです。

以上はてなダイアリーへの要望ということで。よろしくお願いします>d:id:hatenadiaryさん。

(追記)
XMLは「国際対応」遅れてるの? んー? http://d.hatena.ne.jp/contractio/20040309#p1
いや、ウムラウトとかそのへんの文字は XML では
  • 最初からユニコードで書きたまへ
  • ユニコード以外で書くならユニコード文字参照(&#228;とか)で書きたまへ
ということです。HTML のそのへんの文字を表す実体は全部この形に変換できるので、文字の表現力で HTML に劣るというわけではありません*1。 ああ、それで思い出した。対処法にはもう一つ
  • 実体をユニコード文字参照に変換して RSS は任意のエンコーディングで配信
というのがあります。正しい対処法の中ではこれが一番簡単かな。ユニコード非対応のスクリプト言語(古いバージョンの Perl とか)でも対応できるし*2
(追記2) 悪徳商法?マニアックスのRSS(悪の最新情報) も同じ問題を抱えていることが判明。&nbsp; でエラー。 http://d.hatena.ne.jp/rna/20040309#p1
対応済→http://d.hatena.ne.jp/hatenadiary/20040314#1079220730

*1:XHTML だと DTD で実体定義してます(Latin-1, Special)

*2:はてなの場合は既に UTF-8 で配信できてるようなので一番最初に挙げた方法でも手間は一緒ですが。