Conservation des accents des répertoires - PHP - Programmation
Marsh Posté le 26-10-2017 à 17:03:01
Quelle version de PHP ?
Depuis PHP 7.1.0, PHP utilisant l'API Unicode de Windows au lieu d'ANSI, les renvoie en UTF-8 (par défaut, c'est éventuellement "configurable" ).
Antérieur, utilisant l'API ANSI, tous les noms de fichier renvoyés (et à utiliser) sont et doivent être encodés en ANSI (CP1252 pour nous).
Du coup :
1. sois tu convertis toi-même les noms de CP1252 à UTF-8 avec iconv (à préférer à utf8_encode qui effectue une conversion ISO-8859-1 => UTF-8 qui te ferait perdre des caractères comme € ou oe) pour une connexion PDO/MySQL en utf8 (charset=utf8 dans le DSN)
2. tu ne convertis rien, c'est-à-dire que tu restes en CP1252 en mettant ta connexion PDO/MySQL dans le même jeu (charset=latin1 dans le DSN)
Quoi qu'il arrive, au SELECT, tu ne devrais rien avoir à faire (mis à part préciser le jeu de caractères de la connexion, chose qui devrait être déjà faite).
Il serait bon aussi d'ajouter un échappement de $r (qui sort de nulle part - $e ?) voire carrément mieux, d'opter pour une requête préparée.
PS : si ton code n'est pas en PDO, il faut faire l'équivalent de ce paramètre charset (mysqli_set_charset, ou son équivalent OO - pour mysqli)
PPS : il vaudrait mieux éviter MyISAM (pas de clés étrangères, ça peut crasher, etc)
Marsh Posté le 26-10-2017 à 13:45:45
Bonjour,
Mon serveur apache est sous windows.
J'ai une arborescence avec des noms de répertoires contenant des accents.
Je liste mon arborescence avec un script encoder en UTF8 sans BOM et j'inserts les noms (réencodé en utf8) dans une table et champ encodés en utf8_bin (moteur MYISAM).
Normalement dans ma table j'ai de l'utf8, non ?
Ensuite j'ai un autre script encoder en UTF8 sans BOM ou je fait une requête qui liste mes répertoires que j'affiche dans mon navigateur.
Je suis obligé de reconvertir mon nom (utf8_encode($r)) pour avoir mes accents sinon j'ai des '?' à la place, est-ce normal ?
Merci par avance.