У меня есть этот URL с моим тестовым кодом: http://www.gruppenunterkuenfte.de/encodingtest.php?q=köln
Он передает параметр запроса q в запрос SQL.
Странно то, что запрос поступаетиз IE я должен utf8_encode()
это.Если это исходит от Chrome или Firefox, я не могу.
mb_detect_encoding()
Всегда говорит, что запрос UTF-8 (IE и другие).Однако этот запрос сам по себе будет работать только в одном из браузеров.
Это мой тестовый код из приведенного выше URL:
<?php
header('Content-Type: text/html; charset=utf-8');
$config = parse_ini_file("inc/base/config.php", 1);
$link = mysqli_connect($config["database"]["server"], $config["database"]["user"], $config["database"]["passwd"]);
mysqli_select_db($link, $config["database"]["database"]);
mysqli_query($link, "SET NAMES utf8;");
echo 'mb_detect_encoding: '. mb_detect_encoding($_GET['q']) .'<br>';
echo 'Without utf8_encode():<br>';
$res = mysqli_query($link, 'SELECT SQL_CALC_FOUND_ROWS ort FROM BRDOrte
WHERE ort LIKE \''. addslashes($_GET['q']) .'%\'
GROUP BY BINARY ort
ORDER BY BINARY ort
LIMIT 5
');
while ($row = mysqli_fetch_array($res)) print_r($row);
echo '<br>With utf8_encode():<br>';
$res = mysqli_query($link, 'SELECT SQL_CALC_FOUND_ROWS ort FROM BRDOrte
WHERE ort LIKE \''. utf8_encode(addslashes($_GET['q'])) .'%\'
GROUP BY BINARY ort
ORDER BY BINARY ort
LIMIT 5
');
while ($row = mysqli_fetch_array($res)) print_r($row);
?>
Таблица MySQL и все ее поля имеют вид utf8_general_ci.
Итак, как мне сказать IE отправлять параметр Query как UTF-8?
Или как мне определить его на стороне сервера, чтобы я мог правильно кодировать?