首页 > 解决方案 > 希腊字母作为 URL 中的参数

问题描述

我一直在努力将希腊字母作为 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 语句。你能告诉我我应该如何正确地将“希腊语”作为网址输入传递吗?

标签: javascripthtmlurlencodingurlencode

解决方案


在这种情况下,您只需要自己处理 URL 解码。

decodeURIComponent是你应该使用的:

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

(如果值中只有希腊字母,那应该可以。如果参数名称本身也可以有希腊字母,那么pair[0]在将其与存储在中的名称进行比较之前,您可能也需要解码variable。)


推荐阅读