我一直在努力将希腊字母作为参数传递给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输入吗?答案 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方法encodeURI
和decodeURI
,就像这样...
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=Καλημέρα
希望有帮助:)