$_GET 与 $_SERVER['QUERY_STRING'] - 编码问题
$_GET vs $_SERVER['QUERY_STRING'] - encode issue
我正在访问我的脚本并抛出一个 URL 这样的
http://www.anydomain.com/code.php?a=ií
和code.php基本上就是这样
<?php header('Content-Type: text/html; charset=utf-8'); ?>
<html><head>
<meta charset="UTF-8">
</head><body>
<script>
console.log('<?php echo $_SERVER['QUERY_STRING'];?>');
console.log(unescape('<?php echo $_SERVER['QUERY_STRING'];?>'));
console.log('<?php echo $_GET['a'];?>');
</script>
</body></html>
我得到的日志是:
a=i%C3%AD
a=i×
我
在现实生活中我需要很多参数并且需要保存完整的查询,所以 $_SERVER['QUERY_STRING'] 会非常方便。但是字符集似乎无法正常工作,因为它与 $_GET 函数一样。
有没有办法使用 $_SERVER['QUERY_STRING'] 但使用 $_GET 的字符集来获取查询?
$query = http_build_query($_GET);
问题根本不在 PHP,而是在 javascript 函数 unescape
。当我更改为 decodeURIComponent
时,它工作得很好。
我正在访问我的脚本并抛出一个 URL 这样的
http://www.anydomain.com/code.php?a=ií
和code.php基本上就是这样
<?php header('Content-Type: text/html; charset=utf-8'); ?>
<html><head>
<meta charset="UTF-8">
</head><body>
<script>
console.log('<?php echo $_SERVER['QUERY_STRING'];?>');
console.log(unescape('<?php echo $_SERVER['QUERY_STRING'];?>'));
console.log('<?php echo $_GET['a'];?>');
</script>
</body></html>
我得到的日志是:
a=i%C3%AD
a=i×
我
在现实生活中我需要很多参数并且需要保存完整的查询,所以 $_SERVER['QUERY_STRING'] 会非常方便。但是字符集似乎无法正常工作,因为它与 $_GET 函数一样。
有没有办法使用 $_SERVER['QUERY_STRING'] 但使用 $_GET 的字符集来获取查询?
$query = http_build_query($_GET);
问题根本不在 PHP,而是在 javascript 函数 unescape
。当我更改为 decodeURIComponent
时,它工作得很好。