次のhtmlスニペットをIE8とIE7で英語以外の文字(ヘブライ語と中国語の両方を試しました)で実行しましたが、2番目のリンクが正しく機能しません。
警告ボックスに表示されるテキストが壊れています。これはIE8とIE7で発生しますが、Firefoxでは発生しません。Windowsの地域設定には依存しません。
htmlスニペットは次のとおりです(簡潔にするためにhtmlヘッダーとフッターは省略されています。content-typeは "text / html; charset = utf-8"であり、応答ヘッダーも同様です)。
<p>
<a href="javascript:alert('abשלוםab')">link with English and Hebrew text</a>
<a href="javascript:alert('ab%D7%A9%D7%9C%D7%95%D7%9Dab')">same text, url encoded</a>
</p>
2番目のリンクをクリックするとポップアップするアラートボックスは次のとおりです。
「שלום」の文字列はutf-8で8バイトとしてエンコードされているため、8つの%NNアイテムがあり、アラートボックスには8つの奇妙な文字もあります。問題は、Firefoxのように、これがutf-8エンコーディングテキストであることをIEに認識させるにはどうすればよいですか?
アップデート:
(最小限の例の)完全なhtmlはここから入手できます。、、、を
試しましたがdecodeURI
、成功しませんでした。リンクをからに移動すると、問題が解決します。私の問題は、一部のコンテンツが自分の制御できない他のソースから生成されており、href属性内にjavascriptリンクが含まれることになったということです。decodeURIComponent
unescape
href
onclick