Tengo el siguiente problema:
Estoy haciendo un pequeño proyecto con la API REST Slim, hasta aquí todo bien. El problema viene cuando muestro los datos de la base de datos recogidos mediante esta API, mediante la función json_encode(), la cual me los muestra así:
En vez de mostrarme "Geografía", me muestra "Geograf\u00eda".
La codificación está en utf-8 tanto en la base de datos, como en el header() de php.
He probado con la función array_map('htmlentities', $array), también con utf8_encode, etc y solo consigo empeorarlo.
Os pongo el código de la conexión con la base de datos mediante PDO:
Código:
y el código a la hora de obtener los datos:require 'vendor/autoload.php'; $app = new \Slim\Slim(); $app ->config(array( 'debug' => true, 'templates.path' => 'views' )); $app->contentType('text/html; charset=utf-8'); $db = new PDO('mysql:host=localhost;dbname=pruebas;charset=utf8','user1','1234'); $db->exec("set names utf8");
Código:
y por último el código de la página pruebas.php:$app->get($rutaApi . '/prueba', function() use ($app, $db){ $query = $db -> prepare("SELECT * FROM table_pruebas"); $query->execute(); $count = $query->rowCount(); $data['usuarios'] = $query->fetchAll(PDO::FETCH_ASSOC); $data['count'] = $count; $app->render('pruebas.php', $data); });
Código:
A ver si alguien puede echarme una mano.<?php $jsondata = array(); if($count > 0){ $jsondata["Success"] = true; }else{ $jsondata["Success"] = false; } $jsondata["Result"]["ItemCount"] = $count; foreach ($usuarios as $key => $value) { $jsondata["Result"]["Items"][] = $value; } header('Content-type: application/json; charset=utf-8'); $json = json_encode($jsondata, JSON_PRETTY_PRINT); echo $json; exit(); ?>
Muchas gracias y un saludo.