Я разработчик Android и использую PHP только для получения данных из MySQL (поэтому мой PHP очень плохой), и он всегда работает, но я сталкиваюсь с тем, что не могу получить данные с неанглийскими буквами
Я написал такой вопрос Как вставить в объект JSON неанглийские буквы?
но в этом вопросе я думал, что проблема была в кодировке json, но это не было проблемой в json (но теперь я знаю, как решить проблему с json) поэтому мне нужно просто получить неанглийские текстовые данные из MySQL
Я думал, что проблема в базе данных, поэтому я изменил все на utf-8, дважды проверил, сделал тот же запрос в базе данных и получил ожидаемый результат, значит, проблема в php-коде.
затем я исследовал и подумал, что, возможно, мой php не поддерживает utf-8, и эта строка <meta http-equiv = "Content-Type" content = "text/html;charset=utf-8" /> вверху, затем создайте простую переменную String, состоящую из неанглийских букв, и повторите эту переменную, и она показала мне то, что я ожидаю, поэтому я думаю, что php поддерживает utf-8
так что думаю проблема только в части с mysqli_query
это мой код:
<meta http-equiv = "Content-Type" content = "text/html;charset=utf-8" />
<?php
header("Content-type: text/html; charset=utf-8");
$con = mysqli_connect(...);
$sql = "SELECT * FROM news WHERE status = 'actual' ORDER BY id DESC";
$result = mysqli_query($con, $sql);
if (mysqli_num_rows($result) > 0) {
// output data of each row
while($row = mysqli_fetch_assoc($result)) {
echo "id: " . $row["id"]. " - TITLE: " . $row["title"]. " -TEXT: " . $row["text"]. "<br>";
}
} else {
echo "0 results";
}
mysqli_close($con);
?>
это мои данные базы данных:
и структура:

для всей базы данных
MySQL charset: UTF-8 Unicode (utf8)
MySQL connection collation: utf8_unicode_520_ci
Я ожидал получить те же данные, что и в заголовках и текстовых столбцах (вы можете видеть данные выше)
но я получаю:
id: 4 - TITLE: ???????? -TEXT: ????????? ??????? ?????, ? ??? ????????? ?? ?????????
id: 3 - TITLE: A little bit... -TEXT: Just some more patience! And you will get this wonderfull application!
id: 1 - TITLE: �p�???�? -TEXT: Just wait a little bit!
Я пытался написать со всеми подробностями моей проблемы, поэтому помогите мне с кодом, что я должен добавить/изменить (в какой строке?), чтобы получить ожидаемый результат. Спасибо всем заранее!
РЕШЕНИЕ НАЙДЕНО
я должен добавить
$con->set_charset("utf8");
до объявления $sql
Покажите подробности вашего подключения к MySQL. При подключении необходимо указать кодировку.
@user3783243 user3783243 извините, я понял, что вы имеете в виду, что я должен использовать $mysqli->set_charset("utf8"); , но извините, у меня плохое знание php, где мне это написать? после какой строки?
Ваш скрипт отправляет метатег до того, как попытается отправить заголовок. Вы не можете отправлять заголовки после вывода текста в браузер. Вероятно, это должно вызывать ошибки.
@ user3783243 СПАСИБО! Я нашел решение благодаря вам, я должен добавить $con->set_charset("utf8");, и он работает!






Есть ли на
$conнабор символов? stackoverflow.com/questions/10829816/…