Safari + XSLTで文字化け + IEのDOCTYPEスイッチ
何かと問題の多いSafari。XSLTで整形済みのOutputが文字化けする問題にぶちあたる。
IEのDOCTYPEスイッチをCSSをstrictモードにするためには、loose.dtdの場合、
<xsl:output method="html" doctype-public="-//W3C//DTD HTML 4.01 Transitional//EN" doctype-system="http://www.w3.org/TR/html4/loose.dtd" />
と書いておけばいい事は分かった。
しかしこの状態ではSafari(1.3.1)で完全に文字化け。
DOCTYPEスイッチをあきらめて、
method="html"
を取り除くと文字化けは、XSLファイルに書いた日本語文字に限られる。
なのでXSLファイルの日本語文字をUTF-8のEntitiesに下のようにencodeしたら
日本語 → 日本語
文字化けはしない。ただメンテナンス性が最悪だよなぁ。
Safariをもうちょっとなんとかしてくれ。Apple。
ちなみに、はてなのダイアリーのRSSも文字化け。
http://d.hatena.ne.jp/kazeburo/rss
おまけ。Entitiesのencodeのワンライナー。
perl -e 'use encoding "utf8";use HTML::Entities;print encode_entities($ARGV[0].""),"\n";' 日本語