Проблема с символами ñ и акцент производя JSON

У меня есть проблемы с акцентом и специальными символами, производя json с php в акценте, например:

T\u00c3\u00a9cnologia = Técnologia 

уже я попробовал это упорядочить с mysqli_set_charset($conexion, "utf8"); но совсем не.

    <?php 
    header('Access-Control-Allow-Origin: *');
    header('Access-Control-Allow-Methods: GET, POST, OPTIONS');
    header('Access-Control-Allow-Headers: Content-Type,x-prototype-                        version,x-requested-with');
    //header("Content-type: application/json; charset=utf-8");


    $server = "localhost";
    $user = "root";
    $pass = "";
    $bd = "u703093142_wifi";


    //Creamos la conexión
    $conexion = mysqli_connect($server, $user, $pass,$bd) 
    or die("Ha sucedido un error inexperado en la conexion de la base     de datos");

   //generamos la consulta
   $sql = "select upload.*,promociones.nombre_input
                 from upload
                     inner join promociones on      upload.idGaleria=promociones.imagen_gallery limit 4";
   mysqli_set_charset($conexion, "utf8"); //formato de datos utf8



   if(!$result = mysqli_query($conexion, $sql)) die();

   //$clientes = array(); //creamos un array

   /*
   while($row = mysqli_fetch_array($result)) 
   { 

  $titulo=$row['titulo'];
  utf8_decode($nombre_input=$row['nombre_input']);




  $data[] = array('nombre_input'=> $nombre_input,'titulo'=> $titulo);

  }

  */

 while($row = mysqli_fetch_assoc($result)){
 $data[]=array_map('utf8_encode', $row);
 } 

 $close = mysqli_close($conexion) 
 or die("Ha sucedido un error inexperado en la desconexion de la base  de datos");



  //Creamos el JSON
  $json_string = json_encode($data);
  //echo $json_string;




  echo '{"datos":'.$json_string."}";

  //Si queremos crear un archivo json, sería de esta forma:
  /*
 $file = 'clientes.json';
 file_put_contents($file, $json_string);
  */


 ?>
6
задан 29.06.2017, 20:32
2 ответа

Я не понимаю очень хорошо проблему, которая у тебя есть, если он состоит в том, что ты не хочешь, что специальные символы превращаются в формат \u....

У получателя есть, что revertir кодирование, он обычно это делает автоматически, например в php используя json_decode(data_json) он это конвертирует просто так.

Но все же ты хочешь, чтобы они не превратились, используй выбор JSON_UNESCAPED_UNICODE

Тест

$response = "Técnologia";

echo json_encode($response); //T\u00e9cnologia
echo json_encode($response, JSON_UNESCAPED_UNICODE); //Técnologia

Официальная документация PHP json_decode

10
ответ дан 24.11.2019, 13:54

Привет оцененный доказательство добавляя эту линию в твоем файле связи:

mysqli_set_charset($connect,"utf8");

Только ты должен добавлять это и или он появится правильно, или ты не нуждаешься в том, чтобы поместить в head каждого файла, только в файле связи.

4
ответ дан 24.11.2019, 13:54