У меня есть БД с URL. Например, мой адрес
https://besplatka.ua/?prop[161][from]=1&prop[161][to]=3&prop[136][to]=20000¤cy=USD
Когда я использую этот код PHP
$result = mysqli_query($mysqli, "SELECT url FROM urls WHERE id=5");
while($res = mysqli_fetch_array($result))
{
$my_url=$res['url'];
}
echo $my_url;
Я вижу, что страница php не отображает правильное значение. Кодировка везде UTF-8.
https://besplatka.ua/?prop[161][from]=1&prop[161][to]=3&prop[136][to]=20000¤cy=USD
Что означает этот символ ¤? Как исправить ошибку?
мой код подключения <?php $databaseHost = 'localhost'; $ имя_базы_данных = 'систем'; $databaseUsername = 'корень'; $databasePassword = ''; $mysqli = mysqli_connect($databaseHost, $databaseUsername, $databasePassword, $databaseName); ?>
Запустите это сразу после настройки соединения $mysqli->set_charset("utf8");
Как сказал г-н @Mihai, добавьте set_charset в свой код подключения.
Я добавил $mysqli->set_charset("utf8"); к коду подключения Но это не работает. Результат тот же.
Я предполагаю, что вам нужно вставить его снова или исправить в БД.
В бд все ок. php-страница не отображает правильное значение
После некоторых поисков и попыток я обнаружил, что ошибка связана не с кодировкой UTF8, а с символом &
со словом curren
, который становится таким ¤
.
(Чтобы получить информацию о символах: https://dev.w3.org/html5/html-автор/charref)
Так что вы можете исправить это, используя функцию urlencode
или просто поместив свою переменную в первый URL.
Результат: https://besplatka.ua/?currency=USD&prop[161][from]=1&prop[161][to]=3&prop[136][to]=20000
Надеюсь, это поможет вам.
<?php $databaseHost = 'localhost'; $databaseName = 'sys'; $databaseUsername = 'root'; $databasePassword = ''; $mysqli = mysqli_connect($databaseHost, $databaseUsername, $databasePassword, $databaseName); mysqli_set_charset($mysqli,"utf8"); ?>
не работает. Результат тот же.
Что ваша БД имеет тип UTF8?
Вы можете проверить этот комментарий: #14068747 - переполнение стека
utf8_general_ci в БД.
у меня есть этот заголовок header('Content-Type: text/html; charset=UTF-8');
но он не работает. Результат с ¤
спасибо большое
@ user2219963 всегда пожалуйста. Если ответ поможет вам, не забудьте отметить его правильным, чтобы помочь другим людям.
Не поделитесь кодом подключения?