2013-08-01 115 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?