IE 11中unicode的Javascript URL错误

时间:2016-04-05 18:04:25

标签: javascript php unicode

当我调用javascript URL函数时,我在Internet Explorer 11(IE 11)中收到错误。错误是url参数值。参数值是unicode但结果是这样的?????不是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>

2 个答案:

答案 0 :(得分:2)

  

window.location.href = “的index.php值=?” + VAL;

URI不能包含非ASCII字符。 (IRI可以,但是当直接与它们一起呈现时,浏览器会做什么变化很明显。)

当您将一些文本放入URI查询参数值时,需要对其进行URI编码。这不仅仅是因为Unicode - 如果你不这样做,那么你的URI将会破坏URI中特殊的其他值字符,例如&%

location.href = 'index.php?value=' + encodeURIComponent(val);

旁白:

  1. 选择自动导航的框,即“跳转列表”,具有严重的可用性/可访问性缺陷,几乎总是更好地避免。请考虑使用真实链接的弹出式导航列表。

  2. echo $value=$_GET['value'];调试行是跨站点脚本(XSS)安全漏洞。永远记得htmlspecialchars()您输出的所有文字都是HTML。

答案 1 :(得分:0)

问题来自您的文件编码。 所以,如果你在记事本中打开文件并通过此代码 然后通过更改文件编码来保存它 到Utf-8 change encoding of the file

所以你会得到这个结果: result after encoding