2011-03-14 95 views
1

我遇到了一個奇怪的問題與IE瀏覽器的URL,如果我在URL中傳遞場景它不起作用,它似乎完美適用於其他瀏覽器。如何使用Javascript中的重音字符編碼URL?

IE中的URL出來作爲:

.../search.aspx關鍵字= SC%C3%83%C2%a9nario

在火狐URL出來作爲:

.../search.aspx?keyword = sc%C3%A9nario

在IE瀏覽器的URL中斷和Firefox工作正常,我必須做URL解碼來照顧這在IE中?

+0

如何在URL中傳遞它? – Gumbo 2011-03-14 15:40:53

回答

2

雖然你沒有說你如何「通過」字符串,我可以告訴你發生了什麼事。

字符é具有碼點E9。在UTF-8中,它被編碼爲兩個字節:C3 A9。所以,在URL中顯示「方案」的正確途徑是

sc%C3%A9nario 

現在,如果你把這個字符串,看着每一個單個字節,並假定他們是字符,並且做了一個UTF-8編碼,會發生什麼第二次?會發生什麼是

  • 秒 - >取值
  • Ç - >ç
  • %C3將被解釋爲與代碼點C3,即,它在UTF-8是C3 83
  • %A9將被解釋爲帶有代碼點A9的字符,即©,它在UTF-8中是C2 A9。
  • N - >ñ

這與您在IE中看到的完全對應。

現在我不能肯定地說這是怎麼發生的,因爲問題沒有足夠的背景,但是很清楚的是,字符串「scénario」被編碼成UTF-8字節字符串,然後它再次編碼爲,這是基於第一種編碼在Windows-1252或Latin-1編碼中產生字符串的奇怪假設。

你需要看看你的字符串是如何「編碼兩次」。

相關問題