URL中使用希腊字母作为参数

时间:2018-07-31 08:23:13

标签: javascript html url encoding urlencode

我一直在努力将希腊字母作为参数传递给URL(例如http://localhost/test.html?text=Καλημέρα

因此,我创建了一个简单的html:

<!DOCTYPE html>
<html>
<meta charset="UTF-8">
<meta http-equiv="Content-type" content="text/html; charset=UTF-8">

<body>

<p id="text"></p>

<script type="text/javascript">
    function getQueryVariable(variable)
    {
      var query = window.location.search.substring(1);
      var vars = query.split("&");
      for (var i=0;i<vars.length;i++) {
        var pair = vars[i].split("=");
        if(pair[0] == variable){return pair[1];}
      }
      return(false);
    }
    var i = getQueryVariable("text");

    document.getElementById("text").innerHTML = i;

</script>

</body>
</html>

但是,当我从浏览器打开网站时,javascript似乎无法正确处理输入参数并将其打印为希腊文本

这是我在浏览器窗口中看到的:

%CE%9A%CE%B1%CE%BB%CE%B7%CE%BC%CE%AD%CF%81%CE%B1

而不是Καλημέρα。

我认为这是编码问题,所以我在html的顶部插入了UTF-8语句。您能建议我如何正确地将“希腊语”作为URL输入吗?

3 个答案:

答案 0 :(得分:5)

在这种情况下,您只需要注意URL解码即可。

decodeURIComponent是您应该使用的:

if(pair[0] == variable){return decodeURIComponent(pair[1]);}

(如果您在值中仅包含希腊字母,则应该这样做。如果参数名称本身也可以包含希腊字母,那么在与之比较之前,您可能还希望解码pair[0]存储在variable中的名称。)

答案 1 :(得分:1)

docs并带有您喜欢的示例)

解决方案:

<!DOCTYPE html>
<html>
<meta charset="UTF-8">
<meta http-equiv="Content-type" content="text/html; charset=UTF-8">

<body>

<p id="text"></p>

<script type="text/javascript">
    function getQueryVariable(variable)
    {
      var query = window.location.search.substring(1);
      var vars = query.split("&");
      for (var i=0;i<vars.length;i++) {
        var pair = vars[i].split("=");
        if(pair[0] == variable){return decodeURI(pair[1]);}
      }
      return(false);
    }
    var i = getQueryVariable("text");

    document.getElementById("text").innerHTML = i;

</script>

</body>
</html>

答案 2 :(得分:1)

您可以使用内置的JS方法encodeURIdecodeURI,就像这样...

var url = "http://somesite.com?q=Καλημέρα", 
    encoded = encodeURI(url),
    decoded = decodeURI(encoded);

console.log("encoded:", encoded);
//=> http://somesite.com?q=%CE%9A%CE%B1%CE%BB%CE%B7%CE%BC%CE%AD%CF%81%CE%B1
console.log("decoded:", decoded);
//=> http://somesite.com?q=Καλημέρα

希望有帮助:)

encodeURI @ MDN