Json, utf-8 et affichage
regitraz
Messages postés
89
Date d'inscription
Statut
Membre
Dernière intervention
-
regitraz Messages postés 89 Date d'inscription Statut Membre Dernière intervention -
regitraz Messages postés 89 Date d'inscription Statut Membre Dernière intervention -
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 :
Ou $_GET['lang'] correspod a la langue que l'on modifie / créer
Puis lorsque nous voulons lire ce fichier json j'utilise simplement :
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 :
Comment faire pour avoir un affichage correct ?
Merci d'avance.
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:
- Json, utf-8 et affichage
- Clé windows 8 - Guide
- Mixcraft 8 - Télécharger - Création musicale
- Affichage double ecran - Guide
- Internet explorer 8 - Télécharger - Navigateurs
- Windows 11 affichage classique - Guide
2 réponses
Bonjour,
Commence par ça :
https://forums.commentcamarche.net/forum/affich-37584944-php-html-caracteres-accentues-et-l-utf8
Commence par ça :
https://forums.commentcamarche.net/forum/affich-37584944-php-html-caracteres-accentues-et-l-utf8
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 :
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)
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)