如何从url获取utf参数?

时间:2013-08-01 09:43:19

标签: javascript url character-encoding get

我从服务器单词中获得了包含Ž,ć等utf字符等等.... 我输入了url参数,我的网址看起来像?id=229&name=%8eena%20mini%3f

我使用js函数从url获取参数

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参数但是在第二个(当我在url中编码之前有utf时)它会中断。

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

如果从url获取utf时如何获取该参数? (在页面上我有<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">

1 个答案:

答案 0 :(得分:1)

无论Žena%8eena的编码是不是使用UTF-8编码,它都使用Windows-1252编码,因为Ž表示为8e在那个字符集中。

在UTF-8中,Ž表示为c5 bd,因此如果表单具有正确的编码,您应该希望您的网址包含%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?