请同志们告诉我。我来到一些带有查看请求的页面index.php?gost=ГОСТ%C2%A0Р%C2%A050571.5.51−2013
这里是代码
$query = $_GET['gost'];
echo '<meta charset="utf-8">';
echo '1 '.$query.'<br>'; // ВИЖУ
$query = preg_replace('/[\x00-\x1F\x7F\xA0]/u', ' ', $query);
echo '2 '.$query.'<br>'; // ВИЖУ
$query = preg_replace('/\s+/','%',$query);
$query = iconv('UTF-8', 'windows-1251', $query);
echo '3 '.$query; // ПУСТО
第 3 项为空。
但是,如果我有一个 request index.php?gost=ГОСТ%C2%A0Р%20ИСО/МЭК%2074981-99
,那么所有 3 个项目都会正常显示。
在第一种情况下,您的破折号字符以某种方式被错误地编码。它具有 2D 以外的 ASCII 码