encodage texte sur requete mysql

  • Auteur de la discussion Auteur de la discussion nile
  • Date de début Date de début
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.
 
Bah moi j'ai passé toutes mes bases MySQL en utf8... (utf8mb4_unicode_ci), je pense que c'est une bonne pratique...
 
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.
 
Dernière édition:
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 ?
 
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.
 
Le truc c'est est-ce que ça fonctionne pour les textes qui sont déjà dans la bdd depuis des années ...
 
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 ...
 
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
 
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 ...
 
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*_***.
 

➡️ Offre MyRankingMetrics ⬅️

pré-audit SEO gratuit avec RM Tech (+ avis d'expert)
coaching offert aux clients (avec Olivier Duffez ou Fabien Faceries)

Voir les détails ici

coaching SEO
Discussions similaires
Haut