当我调用 javascript URL 函数时,我在 Internet Explorer 11 (IE 11) 中遇到错误。错误是url参数值。参数值是unicode但结果是这样的??????不是统一码。我的代码如下。
<?php
header('Content-Type: text/html; charset=utf-8');
?>
<!DOCTYPE html>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<script type="text/javascript">
function test(val){
var val;
//window.location.assign("index.php?value="+val)
window.location.href="index.php?value="+val;
}
</script>
</head>
<body>
<?php
if(!empty($_GET['value'])){
echo $value=$_GET['value'];
}
?>
<select style="width:180px;" onchange="test(this.value)">
<option value="">select</option>
<option value="நன்றி">நன்றி</option>
</select>
</body>
</html>
最佳答案
window.location.href="index.php?value="+val;
URI 不能包含非 ASCII 字符。 (IRI 可以,但是浏览器在直接呈现它们时所做的操作是明显可变的。)
当您将一些文本放入 URI 查询参数值中时,您需要对其进行 URI 编码。这不仅仅是因为 Unicode,如果您不这样做,那么您的 URI 将因 URI 中的其他特殊值字符而中断,例如 &
或 %
。
location.href = 'index.php?value=' + encodeURIComponent(val);
旁白:
自动导航的选择框(又名“跳转列表”)具有严重的可用性/可访问性缺陷,并且几乎总是最好避免。考虑使用真实链接的弹出导航列表。
echo $value=$_GET['value'];
调试行是一个跨站点脚本 (XSS) 安全漏洞。始终记住htmlspecialchars()
所有输出到 HTML 中的文本。
关于IE 11 中 unicode 的 Javascript URL 错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36433796/