Json, utf-8 et affichage

Fermé
regitraz Messages postés 89 Date d'inscription vendredi 17 octobre 2014 Statut Membre Dernière intervention 30 mai 2021 - Modifié le 17 mai 2020 à 18:00
regitraz Messages postés 89 Date d'inscription vendredi 17 octobre 2014 Statut Membre Dernière intervention 30 mai 2021 - 17 mai 2020 à 18:15
Bonjour,
Alors voici ce que j'ai fait : Dans l'optique de faire un site internet multilingue j'ai créer plusieurs fichier json contenant mes textes dans chaque langues, ces dossiers sont créer a partir d'un tableau associatif PHP contenant les textes de la langue.

Nous avons donc :
$lang['truc1'] = "text truc 1";
$lang['truc2'] = "text truc 2";
//etc

$json = json_encode(mb_convert_encoding($lang, 'UTF-8', 'UTF-8'));
$file = fopen("modele/langue/".$_GET['lang'].".json", "w");
fwrite($file, $json);
fclose($file);
unset($lang);

Ou $_GET['lang'] correspod a la langue que l'on modifie / créer

Puis lorsque nous voulons lire ce fichier json j'utilise simplement :
$json = file_get_contents("modele/langue/".$_SESSION['lang'].".json");
$lang = json_decode($json, true);

Ou $_SESSION['lang'] correspond a la langue sélectionnée par l'utilisateur

Mon problème viens de mb_convert_encoding, avant je ne l'utilisait pas et j'ai eu quelques soucis avec la conversion en json et certains caractère qui n'étaient pas en utf-8.

Maintenant je peut encoder en json sans problème mais ça n'affiche pas les caractère "non normaux", par exemple :
êtes deviens ?tes
où deviens o?
à deviens ?
é deviens ?
etc

J'utilise évidement ce meta :
<meta content="text/html; charset=UTF-8" http-equiv="Content-Type">


Comment faire pour avoir un affichage correct ?
Merci d'avance.
A voir également:

2 réponses

jordane45 Messages postés 38346 Date d'inscription mercredi 22 octobre 2003 Statut Modérateur Dernière intervention 16 décembre 2024 4 717
17 mai 2020 à 18:04
0
regitraz Messages postés 89 Date d'inscription vendredi 17 octobre 2014 Statut Membre Dernière intervention 30 mai 2021
Modifié le 17 mai 2020 à 18:27
A priori tout est bon.
J'ai checker 2 -3 fichier ils sont tous encodé en utf-8
J'ai mit ca pour créer ma base de donnée :
  PdoSpect::$PDO = new PDO(PdoSpect::$serveur.';'.PdoSpect::$bdd, PdoSpect::$user, PdoSpect::$mdp, array(PDO::ATTR_ERRMODE => PDO::ERRMODE_WARNING));
  PdoSpect::$PDO->query("SET CHARACTER SET utf8");

j'ai déjà montré ma balise meta, j'ai essayer d'ajouter le header en php ca n'a rien changer
L'interclassement de ma BDD est de base principalement en latin_sweedish_ci, mais renvoie les donnée en utf-8 grace au code ci-dessu.
Et de toute maniérè les textes ne sont pas stocké dans la BDD (ce qui serait peut être plus simple enfaite)
0