пожалуйста, как я могу напечатать Json с помощью php
Я использую приведенный ниже код для английского языка, все в порядке, но с другими языками
вывод - неизвестный символ, например ??????? ??????? ???? ?? - ????? - ?????? -??? ?
как их распечатать, как будто они находятся в символах базы данных
в phpMyAdmin я использую utf8_bin
и это мой код php
<?php
$servername = "localhost";
$username = "root";
$password = "";
$dbname = "clothesapp";
// Create connection
$conn = new mysqli($servername, $username, $password, $dbname);
// Check connection
if ($conn->connect_error) {
die("Connection failed: " . $conn->connect_error);
}
$NumSub = 500;
$start = (int)$_GET['limit'];
$sql = "SELECT * FROM clothesapi LIMIT $start , $NumSub";
$result = $conn->query($sql);
if ($result->num_rows > 0) {
$All_storys = array();
while($row = $result->fetch_assoc()) {
$All_storys[] = $row;
}
} else {
echo "0 results";
}
$json_re=array();
array_push($json_re,array("All_storys"=>$All_storys));
echo json_encode($json_re);
$conn->close();
?>
Если у вас есть другой код, можете сделать это, пожалуйста, это может мне очень помочь
они выглядят вот так. [{"id": "11", "story_name": "??????", "img_link": "ДОБРО ПОЖАЛОВАТЬ ?????? ????? \ r \ n", "details": "????????"}]
а как насчет ввода, как просили?
Между прочим, пара дополнительных моментов: 1) Вы не должны повторять «0 результатов», когда набор результатов пуст. клиент будет ожидать JSON и не сможет его проанализировать. Вместо этого просто верните пустой массив (в кодировке json). Затем предоставьте клиенту возможность определять количество строк, если это важно для него.
2) Никогда не заставляйте ваше веб-приложение входить в базу данных как root. Root может делать все, что угодно, поэтому, если в вашем PHP-коде есть необнаруженная уязвимость, это просто оставляет вашу базу данных открытой книгой для хакеров. Вместо этого создайте отдельную учетную запись пользователя специально для этого приложения, у которого есть только разрешения, на самом деле потребности для правильной работы. Даже не используйте корневую учетную запись в качестве ярлыка во время разработки или тестирования, потому что вам также необходимо проверить разрешения вашей учетной записи - в противном случае, когда вы начнете работать, у вас могут возникнуть непредвиденные ошибки, связанные с настройкой учетной записи пользователя.
Кроме того, есть одно предложение: перед выводом JSON установите заголовок типа контента: header("Content-type: application/json; charset=utf-8"); и посмотрите, имеет ли это какое-либо значение для просмотра вывода. А также, где вы на самом деле видите этот результат? На веб-странице? В сетевом инструменте? В PostMan что ли? Возможно, также попробуйте в другом клиенте, если это имеет значение. И отдельный вопрос - что будет, если просто вывести данные без кодировки в JSON? как это тогда выглядит? мы должны исключить процесс кодирования json как виновника, если сможем.
Наконец, прочтите эту статью: stackoverflow.com/questions/279170/utf-8-all-the-way-through и убедитесь, что вы следуете рекомендациям. В частности, я подумал, что вам следует проверить, что вы подключаетесь к базе данных, используя правильный набор символов.
Кстати, я думаю, что utf8_bin на самом деле является сопоставление, а не набор символов.
См. «Вопросительный знак» в stackoverflow.com/questions/38363566/…






1. данные в json должны быть utf8
2.Попробуйте этот javascript https://mothereff.in/utf-8 при отображении.
3.Если нужна дальнейшая обработка в php
JsonUtf8Decode(&$v, $k) { $v = utf8_decode($v); }array_walk_recursive($json_re, "JsonUtf8Decode");
Это из руководства по PHP.
Не используйте никакое кодирование / декодирование; вместо этого найдите и устраните основную причину.
наконец я нашел ответ Я должен поставить эту строку под соединение с базой данных
$conn = new mysqli($servername, $username, $password, $dbname);
$conn->set_charset("utf8");
Покажите нам пример входных данных, а также выходной JSON, который вы видите, пожалуйста