Je viens ouvrir le débat sur les noms de fichiers accentués
Bonjour toutes et tous,
Et vous chers Modo merci de me mettre dans la bonne catégorie. ...
Je viens ouvrir le débat sur les noms de fichiers accentués tant je suis
fatigué de répondre sur mes deux forums préférés aux moyens enfantins
à mettre en place pour gérer Tout les problèmes d'accent dans les noms de fichiers.
ou bases de données.
Pour cela, je dois parler de nos débuts. le fichier DOS (.bat) pour faire un DIR
dans un BAT, un DIR *.* /S /ON >c:\mondir.txt fait l'affaire !
Mais justement s'il y a des noms accentués il faudra lui dire quel est
l'encodage des répertoires par exemple en windows10 c'est 65001.
Ainsi mon fichier BAT sera tout simplement:
Code batch : Sélectionner tout - Visualiser dans une fenêtre à part
1
2 chcp 65001 > nul DIR *.* /S /ON >c:\mondir.txt
Il en va de même pour le PHP:
L'exemple le plus typique pour vous expliquer ,comment cela marche,
est de regarder un PHP Appelé par de l'AJAX.
Cela mettra en évidence la confusion que vous trouverez en recherchant sur Google
bien sur dans les forums, mais également dans les articles des "grands spécialistes".
c'est quoi un PHP ,un programme qui prépare un texte qui sera envoyé à son destinataire,
le visiteur , ou son HTML qui attend une réponse ,dans notre cas un echo ($reponse);
Revenons à notre DIR, pour PHP gérant une photothèque il va devoir parcourir un répertoire
du serveur qui contient par exemple des images de tableaux dont les noms sont accentués !
mais comment lui dire quel en est l'encodage ? tout simplement en lui donnant de suite
en tête du PHP un
Code php : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4 <?php header('Content-type: text/html; charset=iso-8859-1'); ?>
par contre lorsque le php aura terminé son travail de mise en forme
son echo $reponse; je vais (ce qui n'est pas obligatoire mais évite bien des soucis ...)
lui faire une page invisible ainsi
Vous avez tout compris le header à dit au PHP en quel encodage il doit travailler, et au HTML
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13 <!DOCTYPE html> <html lang="fr"> <head> <meta charset="utf-8"> <meta name=viewport content="width=device-width, initial-scale=1"> <!--[if IE]> <meta http-equiv="X-UA-Compatible" content="IE=edge"> <![endif]--> </head><body> <?PHP echo ($reponse;) ?> </body></html>
qui va recevoir sa réponse en quel encodage il la recevra !
J'ai pris UTF8 parceque le html appelant ce PHP était en UTF8 !!!
Voila peut'étre cela vous aidera je le souhaite !
Partager