2013-08-01 147 views
2

我從包含UTF字符,如Z,C等服務器的話得到了.... 我把URL參數和我的網址看起來像?id=229&name=%8eena%20mini%3f如何從url中獲取utf參數?

我從網址與js函數

獲取參數
function getURLParameter(name) { 
    name = name.replace(/[\[]/, "\\\[").replace(/[\]]/, "\\\]"); 
    var regex = new RegExp("[\\?&]" + name + "=([^&#]*)"), 
     results = regex.exec(location.search); 
    return results == null ? "" : decodeURIComponent(results[1].replace(/\+/g, " ")); 
} 

它解析第一個id參數,但第二個(當我有UTF之前在url編碼)它打破。

var id = getURLParameter('id');//works 
var id = getURLParameter('name');//breaks when have utf 

如何獲取該參數,當它有utf從url? (在頁面上我有<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">

+0

「it break」意思是什麼?怎麼了? –

+1

您的編碼已損壞; '%8eena%20mini%3f''%8'代表什麼?它無效..'encodeURIComponent(「Žeenamini?」)===「%C5%BDeena%20mini%3F」'這將解碼罰款 –

+0

decodeURI((RegExp(name +'='+'(。+?) (&| $)')EXEC(location.search)|| [,空])[1]) –

回答

1

無論是編碼Žena%8eena沒有使用UTF-8編碼,它使用的是Windows 1252 enoding,因爲Ž表示爲在該字符集8e

在UTF-8中,Ž表示爲c5 bd,因此如果表單具有正確的編碼,則應該期望您的URL包含%c5%bd

看起來您需要上一頁上的<meta charset="utf-8">,或者您至少需要提交表單上的屬性accept-charset="utf-8"

另請參閱:Is there any benefit to adding accept-charset="UTF-8" to HTML forms, if the page is already in UTF-8?