Pb json_encode (php) et caractères accentués
Résolu
OConell
Messages postés
139
Date d'inscription
Statut
Membre
Dernière intervention
-
SebRomeo Messages postés 2 Date d'inscription Statut Membre Dernière intervention -
SebRomeo Messages postés 2 Date d'inscription Statut Membre Dernière intervention -
Bonjour,
Je réalise une appli web qui communique avec une bdd. Tout ce que je fais depuis mon appli fonctionne, mais cette bdd et utilisé par une autre appli java.
Le problème vient de la récupération des données de la bdd qui ne sont créer au chargement de l'appli java (par copie d'une table d'initialisation dans la table courante).
Je récupère toutes les données en php (utilisation de PDO sur base myssql) et j'utilise la fonction json_encode. C'est là que ça plante. tous les champs où il y a un caractères avec accents est remplacé par null.
SI vous avez des idées merci...
-------------------------------------------------------------------------------------
... // fichier connexion.php
try {
$bdd = new PDO("mysql:host=$hote;dbname=$nombd", $login, $mdp);
}catch (Exception $e){ die(''); }
...
//fichier php
<?php
header('Content-Type: text/html; charset=utf-8');
//header("Content-Type: text/plain"); //test
//header('content-type: text/html; '); // test
//header('content-type: text/html; charset=utf-8'); //test
require('connexion.php');
$rows = array();
try
{
$stmt = $bdd->prepare('Select usl_id, usl_nom, usl_type, usl_lati, usl_longi, usl_descri FROM usl');
$stmt->execute();
$rows = $stmt->fetchAll(PDO::FETCH_ASSOC);
echo utf8_decode($rows[0]['usl_nom']); // -> oK
echo "\n <br/>";
echo utf8_decode(json_encode($rows)); // -> les champs avec char accentués = null
$stmt->closeCursor();
}
catch (Exception $e)
{
die("erreur");
}
?>
-------------------------------------------------------------------------------------
Je réalise une appli web qui communique avec une bdd. Tout ce que je fais depuis mon appli fonctionne, mais cette bdd et utilisé par une autre appli java.
Le problème vient de la récupération des données de la bdd qui ne sont créer au chargement de l'appli java (par copie d'une table d'initialisation dans la table courante).
Je récupère toutes les données en php (utilisation de PDO sur base myssql) et j'utilise la fonction json_encode. C'est là que ça plante. tous les champs où il y a un caractères avec accents est remplacé par null.
SI vous avez des idées merci...
-------------------------------------------------------------------------------------
... // fichier connexion.php
try {
$bdd = new PDO("mysql:host=$hote;dbname=$nombd", $login, $mdp);
}catch (Exception $e){ die(''); }
...
//fichier php
<?php
header('Content-Type: text/html; charset=utf-8');
//header("Content-Type: text/plain"); //test
//header('content-type: text/html; '); // test
//header('content-type: text/html; charset=utf-8'); //test
require('connexion.php');
$rows = array();
try
{
$stmt = $bdd->prepare('Select usl_id, usl_nom, usl_type, usl_lati, usl_longi, usl_descri FROM usl');
$stmt->execute();
$rows = $stmt->fetchAll(PDO::FETCH_ASSOC);
echo utf8_decode($rows[0]['usl_nom']); // -> oK
echo "\n <br/>";
echo utf8_decode(json_encode($rows)); // -> les champs avec char accentués = null
$stmt->closeCursor();
}
catch (Exception $e)
{
die("erreur");
}
?>
-------------------------------------------------------------------------------------
A voir également:
- Json_encode utf8
- Php json_encode utf8 - Meilleures réponses
- Json_encode php - Meilleures réponses
- Local-part of envelope rcpt address contains utf8 but remote server did not offer smtputf8 - Forum Mail
- Exim4 en UTF8 ✓ - Forum Debian
- Encodage utf8 mail php smtp ✓ - Forum Mail
- Convertir fichier utf8 en pdf - Forum PDF
- Chcp utf8 - Windows 11
7 réponses
La fonction json_encode de PHP ne travaille qu'en UTF-8, donc il faut que tout soit en UTF-8 : script PHP, variables de type "string" manipulées, mais aussi headers HTTP.
Cf ce tuto :
http://www.finalclap.com/faq/60-php-debug-json
Cf ce tuto :
http://www.finalclap.com/faq/60-php-debug-json
json_encode($comp, JSON_UNESCAPED_UNICODE)
depuis PHP 5.4