javascript - 希腊字母作为 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 语句。你能告诉我我应该如何正确地将“希腊语”作为网址输入传递吗?
解决方案
在这种情况下,您只需要自己处理 URL 解码。
decodeURIComponent
是你应该使用的:
if(pair[0] == variable){return decodeURIComponent(pair[1]);}
(如果值中只有希腊字母,那应该可以。如果参数名称本身也可以有希腊字母,那么pair[0]
在将其与存储在中的名称进行比较之前,您可能也需要解码variable
。)