« Catalystのはてな技術勉強会 | メイン | ロッテが優勝するなんて。 »

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したら

日本語 → &#x65E5;&#x672C;&#x8A9E; 

文字化けはしない。ただメンテナンス性が最悪だよなぁ。
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";' 日本語