Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
2936 connectés 

  FORUM HardWare.fr
  Programmation
  PHP

  Conservation des accents des répertoires

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

Conservation des accents des répertoires

n°2306992
snike
Posté le 26-10-2017 à 13:45:45  profilanswer
 

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).

Code :
  1. // Ca ressemble à cela
  2. foreach (glob("*" ) as $e) {
  3.   exe(INSERT INTO rep VALUES('"'.utf8_encode($r).'"'));
  4. }


  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.

mood
Publicité
Posté le 26-10-2017 à 13:45:45  profilanswer
 

n°2307008
pluj
Posté le 26-10-2017 à 17:03:01  profilanswer
 

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 :

  • pour PHP >= 7.1.0, rien à faire normalement, rien à convertir (= supprimer utf8_encode) mais ta connexion doit être en UTF-8 (charset=utf8 dans le DSN)
  • pour PHP < 7.1.0, deux solutions :

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)


Message édité par pluj le 26-10-2017 à 17:21:14
n°2307028
snike
Posté le 27-10-2017 à 09:57:45  profilanswer
 

Merci je vais étudier cela.


Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation
  PHP

  Conservation des accents des répertoires

 

Sujets relatifs
[VB.Net] Comparaison insensible aux accentsSuppression accents d'un fichier UTF8 [RESOLU]
Copie de fichier dans des sous répertoires aléatoires multiplesExistence de répertoires d'après une liste
Suppression des accents [RESOLU]Help SVP "sous-répertoires VBA"
disparition des accents sur site web[RESOLU][php]pb gestion des accents dans formulaire
[.htaccess] remplacer les accents par leur code - URL rewritingrépertoires successifs d'un chemin [résolu]
Plus de sujets relatifs à : Conservation des accents des répertoires


Copyright © 1997-2022 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR