・手元にopera 8.01 があったので、やってみたらやはり @ が ! に化けた。
・手元にlinux+apache環境が在ったので、
 問題のhtmlを調べ、form で post で送っている事が分かったので、
 受け取った入力をそのまま画面表示するCGIを作成し、
 firefox, opera, IE 6 を試して見たところ、
 例えば、入力が 
user@host.co.jp とすると
 firefox, opera では 'user%40host.co.jp' と 送っている
 (エンコーディングされている)が、
 IEでは'user@host.co.jp' (エンコーディングされていない)
 という事が分かりました。
CGIでは(不要と思っても)デコーディングしておくのが普通と思うので、
他サイトでは問題が発生しないのでしょう(横浜市図書館のCGI作成者は素人!)。
それはともかく、このfirefox・operaとIEの違いは、どちらが正しいのでしょうか?
横浜在住、
森