UTF-8 -> Windows-31J。スクリプトもUTF-8のままで。
回避策 リンク元のHTMLの文字コードをShift JISにてエンコードしてください。
http://support.microsoft.com/default.aspx?scid=kb;ja;896315 より
結構知られていると思うけど、IEでUTF-8のHTMLを使うとリンクをクリックしたときにおかしくなる。回避策はShift JISにするしかないらしい。
で、Tapestryの細かい話。バージョンは3.0.3ね。4.0は分からん。
出力をWindows-31Jにしたいなら .applicationファイルにorg.apache.tapestry.output-encoding に Windows-31Jと書けばいいんだけど、それだけだとjavascriptのエンコードまでは指定してくれない。当たり前か。
http://blog.inetplus.jp/MT/Tapestry/archives/2004/07/24104535.html
HTML中のscriptタグは、何も指定しないとHTML自身のcharsetでスクリプトをロードするので、jsファイルもUTF-8だったりする場合、以下のようにcharsetを指定する必要がある。
<script language="JavaScript" charset="UTF-8" ・・・/>
残念ながらTapestryには、これを指定する方法は見つからなかったので、自分で出力するようにするしかない。scriptタグを出力しているのはorg.apache.tapestry.html.BodyクラスのwriteScriptメソッドなので、ここを適当な文字セットをcharsetとして出力できるようなorg.apache.tapestry.html.Bodyを拡張したクラスを作るしかないっぽいっす。