при отправки GET-запроса возвращаются вопросы вместо кириллицы. Как можно исправить? Использую SLIM в PHP Ответ приходит в таком виде:
{"cities":[{"id":1,"region":"????????? ????","autonom":null,"area":"???????? ?????","city":"????????","city_2":null},
{"id":2,"region":"????????? ????","autonom":null,"area":"???????? ?????","city":"???????????????","city_2":null},
{"id":3,"region":"????????? ????","autonom":null,"area":"???????? ?????","city":"???????????","city_2":null}
index.php
<?php
use \Psr\Http\Message\ServerRequestInterface as Request;
use \Psr\Http\Message\ResponseInterface as Response;
require '../vendor/autoload.php';
require_once '../includes/DbOperation.php';
//Creating a new app with the config to show errors
$app = new \Slim\App([
'settings' => [
'displayErrorDetails' => true
]
]);
....
$app->get('/cities', function (Request $request, Response $response) {
$db = new DbOperation();
$cities = $db->getAllCities();
$response->getBody()->write(json_encode(array("cities" => $cities)));
});
...
$app->run();
DbOperation.php
<?php
class DbOperation
{
private $con;
function __construct()
{
require_once dirname(__FILE__) . '/DbConnect.php';
$db = new DbConnect();
$this->con = $db->connect();
}
....
function getAllCities(){
$stmt = $this->con->prepare("SELECT id, region, autonom, area, city, city_2 FROM locality");
$stmt->execute();
$stmt->bind_result($id, $region, $autonom, $area, $city, $city_2);
$cities = array();
while($stmt->fetch()){
$temp = array();
$temp['id'] = $id;
$temp['region'] = $region;
$temp['autonom'] = $autonom;
$temp['area'] = $area;
$temp['city'] = $city;
$temp['city_2'] = $city_2;
array_push($cities, $temp);
}
return $cities;
}
....
}
DbConnect.php
<?php
class DbConnect
{
//Variable to store database link
private $con;
//Class constructor
function __construct()
{
}
//This method will connect to the database
function connect()
{
//Including the constants.php file to get the database constants
include_once dirname(__FILE__) . '/Constants.php';
//connecting to mysql database
$this->con = new mysqli(DB_HOST, DB_USERNAME, DB_PASSWORD, DB_NAME);
//Checking if any error occured while connecting
if (mysqli_connect_errno()) {
echo "Failed to connect to MySQL: " . mysqli_connect_error();
return null;
}
//finally returning the connection link
return $this->con;
}
}
Варианты лечения:
// Демо вариант
$js = '{
"cities": [{
"id": 1,
"region": "Алтайский край"
}, {
"id": 2,
"region": "Калининградская область"
}, {
"id": 3,
"region": "Брянская область"
}]
}';
// #1 ------------------------------------------
$ecnd = utf8_encode($js); // Пропустить через utf8_encode
$decnd = utf8_decode($ecnd); // Принять utf8_decode
// #2 -------------------------------------------
header('Content-type: application/json;charset=utf-8'); // Добавить HEADER
echo json_encode($js);
// #3 Опция добавления к json_encode вторым аргументом
// ,JSON_UNESCAPED_UNICODE|JSON_UNESCAPED_SLASHES
Доки 1
Доки 2
Я решил так: оправил после создания соединения $stmt = $this->con->prepare("SET NAMES 'utf8'");
Код:
function __construct()
{
require_once dirname(__FILE__) . '/DbConnect.php';
$db = new DbConnect();
$this->con = $db->connect();
$stmt = $this->con->prepare("SET NAMES 'utf8'");
$stmt->execute();
}
Кофе для программистов: как напиток влияет на продуктивность кодеров?
Рекламные вывески: как привлечь внимание и увеличить продажи
Стратегії та тренди в SMM - Технології, що формують майбутнє сьогодні
Выделенный сервер, что это, для чего нужен и какие характеристики важны?
Современные решения для бизнеса: как облачные и виртуальные технологии меняют рынок
Пользователь подписывается на определенные категории новостейНапример, на чемпионат Эстонии и на клуб Челси
Начал догадываться, что это из-за того, что на странице submit изначально не лежал, по этому и не случаеться событиеНо всё же решил спросить, как...
Привык к процедурному стилю, сейчас со скрежетом перехожу на ООП, помогитеПравильно ли я написал код так все работает, но мне кажется нужно...
Есть необходимость реализовать конвертор из HTML в PDF продукцииВсе настроено все реализовано, но есть проблема, 25 страниц конвертируется за 75 секунд,...