<iframe id=dispZone width='100%' height='100%' src='/MyApp/%u4E0A%u4E0B.htm'>

發現以上的寫法在IE6下OK,但IE7中IFrame不會顯示內容,呈現about:blank的狀態。如果試著在IE7的地址列敲入http://myweb/MyApp/%u4E0A%u4E0B.htm,會得到一個對話框:

Windows cannot find 'http://myserver/MyApp/%u4E0A%u4E0B.htm'. Check the spelling and try again.

用Fiddler觀察顯示,IE7完全忽略掉這個URL,沒有發出任何Request到網路上,我猜這是IE7為了防止惡意URL偽裝的安全機制(URL Spoof Prevention?),所以我做了以下的測試。

<html><body>
<li>Link 1 <a href="瞎.htm">瞎.htm</a>
<li>Link 2<a href="%u778E.htm">%u778E.htm</a>
<li>Link 3<a href="%bdM.htm">%bdM.htm</a>
<li>Link 4<a href="%bdM.htm?p=%u778E">%bdM.htm?p=%u778E</a>
</body></html>

在這個測試中,Link 1, 3, 4 Test OK。Link 2則呈現完全無法點選的狀態,看來是被徹底地封鎖了,但像Link 4的UrlEncode是放在Query String中而非檔案名上,則可以過關。

依據以上測試結果,我的結論是:

  • IE7對於檔案名出現Unicode UrlEncode語法的URL一律殺無赦,但用的若是Big5 UrlEncode倒會放行。
  • Query String中使用Unicode UrlEncode則不會造成問題。

如何避免這個困擾呢? 我的想法是,網頁檔名一律用英文命名吧!

總之,中文檔名在網站、瀏覽器互動時有不少麻煩事(例如這個),而我也想不出非要取中文檔名不可的理由。至於連這種時候都一定要堅持愛台灣到底的朋友,自個兒多擔待點吧!


Comments

Be the first to post a comment

Post a comment