encodage texte sur requete mysql

Discussion dans 'Demandes d'avis et de conseils sur vos sites' créé par nile, 21 Octobre 2020.

  1. nile
    nile WRInaute discret
    Inscrit:
    13 Avril 2007
    Messages:
    148
    J'aime reçus:
    1
    Bonjour,

    Ets-il possible de placer un utf8_encode à la sortie d'une requête mysql, du genre :
    $request=mysqli_query($conn,"select * from Articles")
    while($ligne = utf8_encode(mysqli_fetch_object($request)))

    ceci pour éviter d'avoir à placer utf8_encode sur chaque echo de récupération des données de la base ?

    Si c'est pas possible, existe-t-il d'autres solutions ?

    Merci d'avance.
     
  2. spout
    spout WRInaute accro
    Inscrit:
    14 Mai 2003
    Messages:
    9 101
    J'aime reçus:
    304
  3. rick38
    rick38 WRInaute passionné
    Inscrit:
    23 Février 2013
    Messages:
    1 543
    J'aime reçus:
    210
    Bah moi j'ai passé toutes mes bases MySQL en utf8... (utf8mb4_unicode_ci), je pense que c'est une bonne pratique...
     
    spout apprécie ceci.
  4. spout
    spout WRInaute accro
    Inscrit:
    14 Mai 2003
    Messages:
    9 101
    J'aime reçus:
    304
    Heu je me relis, je me suis trompé avec le array_map, il fait faire un array_walk_recursive vu que c'est un tableau associatif:

    PHP:
    function array_utf8_encode($arr)
    {
        
    array_walk_recursive($arr, function (&$val) {
            
    $val utf8_encode($val);
        });

        return 
    $arr;
    }
    Mais comme le souligne @rick38 c'est mieux d'avoir directement sa DB en UTF8.
     
    #4 spout, 22 Octobre 2020
    Dernière édition: 22 Octobre 2020
  5. nile
    nile WRInaute discret
    Inscrit:
    13 Avril 2007
    Messages:
    148
    J'aime reçus:
    1
    Merci pour vos réponses. A propos des BDD justement, qu'est-ce qu'il faut passer en utf-8 : le serveur mysql ? la base de données ? chaque table de la base ? les interclassements ?
     
  6. rick38
    rick38 WRInaute passionné
    Inscrit:
    23 Février 2013
    Messages:
    1 543
    J'aime reçus:
    210
    L'interclassement de chaque champ textuel de chaque table.
    En changeant celui d'une table avec phpMyAdmin, il y a une option "Collation" et dessous "Change all column collations" pour ne pas avoir à le faire manuellement pour chaque champ. Il faut le faire pour toutes les tables.
     
  7. spout
    spout WRInaute accro
    Inscrit:
    14 Mai 2003
    Messages:
    9 101
    J'aime reçus:
    304
    Code:
    ALTER DATABASE databasename CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;
    ALTER TABLE tablename CONVERT TO CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;
    Src: https://stackoverflow.com/a/6115705/1656355
     
  8. nile
    nile WRInaute discret
    Inscrit:
    13 Avril 2007
    Messages:
    148
    J'aime reçus:
    1
    Le truc c'est est-ce que ça fonctionne pour les textes qui sont déjà dans la bdd depuis des années ...
     
  9. nile
    nile WRInaute discret
    Inscrit:
    13 Avril 2007
    Messages:
    148
    J'aime reçus:
    1
    De toute façon, ça ne fonctionne pas, quelque soit l'encodage de la BDD, les é et autres caractères ne s'affichent pas si je ne fais pas un utf8_encode ...
     
  10. spout
    spout WRInaute accro
    Inscrit:
    14 Mai 2003
    Messages:
    9 101
    J'aime reçus:
    304
    Oui mais l'encodage il faut vérifier que tout concorde :
    - HTML meta charset
    - DB collation
    - DB "SET NAMES utf8"
    - Fichiers PHP en UTF8
    - etc...

    Le mieux est vraiment de décider de franchir le pas et passer en UTF8
     
  11. nile
    nile WRInaute discret
    Inscrit:
    13 Avril 2007
    Messages:
    148
    J'aime reçus:
    1
    Sinon spout, peux-tu me donner un exemple plus précis d'utilisation de ta fonction :
    function array_utf8_encode($arr)
    {
    array_walk_recursive($arr, function (&$val) {
    $val = utf8_encode($val);
    });
    return $arr;
    }
    avec la requète qui m'intéresse :
    $request=mysqli_query($conn,"select * from Articles")

    Je vois pas comment l'appliquer ...
     
  12. spout
    spout WRInaute accro
    Inscrit:
    14 Mai 2003
    Messages:
    9 101
    J'aime reçus:
    304
    Je n'ai pas d'exemple plus précis, il faut tester en live et ça doit faire 15 ans que j'ai pas utilisé mysql*_***.
     
  13. nile
    nile WRInaute discret
    Inscrit:
    13 Avril 2007
    Messages:
    148
    J'aime reçus:
    1
    Ok, merci pour les infos.
     
Chargement...
Similar Threads - encodage requete mysql Forum Date
encodage volage Développement d'un site Web ou d'une appli mobile 6 Juin 2016
[résolu] recupération de flux xml et erreur encodage des caractères Développement d'un site Web ou d'une appli mobile 27 Janvier 2016
Problème d'encodage Développement d'un site Web ou d'une appli mobile 30 Janvier 2015
Problème d'encodage caractère Google+ 6 Août 2014
Problème encodage UTF-8 Problèmes de référencement spécifiques à vos sites 4 Octobre 2013
Encodage accents sur Prestashop Débuter en référencement 20 Septembre 2013
L'encodage dans les snippets Google Débuter en référencement 13 Février 2013
Encodage problématique Développement d'un site Web ou d'une appli mobile 14 Septembre 2012
Problème d'encodage... Développement d'un site Web ou d'une appli mobile 2 Mars 2012
Problème d'encodage url les é devient %E9 URL Rewriting et .htaccess 22 Décembre 2011