IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Langage PHP Discussion :

Renommage du caractère à dans le nom d'un fichier


Sujet :

Langage PHP

  1. #21
    Expert confirmé
    Avatar de laurentSc
    Homme Profil pro
    Webmaster débutant perpétuel !
    Inscrit en
    Octobre 2006
    Messages
    10 382
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 60
    Localisation : France, Isère (Rhône Alpes)

    Informations professionnelles :
    Activité : Webmaster débutant perpétuel !
    Secteur : Industrie

    Informations forums :
    Inscription : Octobre 2006
    Messages : 10 382
    Points : 5 732
    Points
    5 732
    Billets dans le blog
    1
    Par défaut
    (et convertissez le fichier PHP… )
    J'ai déjà essayé sans succès UTF-8, mais que faut-il comprendre par "convertir le fichier PHP" ?
    Il vaut mieux viser la perfection et la manquer que viser l'imperfection et l'atteindre. - Bertrand Russell

    Si la discussion est résolue, merci de cliquer sur le bouton

  2. #22
    Expert confirmé
    Homme Profil pro
    Inscrit en
    Septembre 2006
    Messages
    2 937
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations forums :
    Inscription : Septembre 2006
    Messages : 2 937
    Points : 4 358
    Points
    4 358
    Par défaut
    Citation Envoyé par laurentSc Voir le message
    J'ai déjà essayé sans succès UTF-8, mais que faut-il comprendre par "convertir le fichier PHP" ?
    si votre fichier PHP contient le caractère "à" mais est lui-même encodé en 8859-1, la chaîne qui sera passé à rename() contiendra le byte correspondant à "à" en 8859-1… même si vous prétendez qu'il est en UTF-8 dans son entête HTML… et non la séquence de 2 bytes correspondant à "à" en UTF-8…
    et donc çà ne changera rien du tout…

    sur un OS civilisé avec un éditeur de texte digne de ce nom, quand vous ouvrez et sauvez un fichier texte vous devriez avoir une option pour spécifier l'encoding du fichier lu/écrit…

    bref si votre éditeur de texte ne gère pas les encodings : vous n'y arriverez pas…

    en ligne de commande sur tout Unix et assimilé :
    man iconv

  3. #23
    Expert confirmé
    Avatar de laurentSc
    Homme Profil pro
    Webmaster débutant perpétuel !
    Inscrit en
    Octobre 2006
    Messages
    10 382
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 60
    Localisation : France, Isère (Rhône Alpes)

    Informations professionnelles :
    Activité : Webmaster débutant perpétuel !
    Secteur : Industrie

    Informations forums :
    Inscription : Octobre 2006
    Messages : 10 382
    Points : 5 732
    Points
    5 732
    Billets dans le blog
    1
    Par défaut
    bref si votre éditeur de texte ne gère pas les encodings : vous n'y arriverez pas…
    Je suis sous Windows XP et utilise Notepad++ pour éditer les fichiers PHP, mais n'ai jamais vu une telle option. Sauriez-vous me conseillez un éditeur qui la propose ?
    Il vaut mieux viser la perfection et la manquer que viser l'imperfection et l'atteindre. - Bertrand Russell

    Si la discussion est résolue, merci de cliquer sur le bouton

  4. #24
    Membre émérite
    Avatar de Eric2a
    Homme Profil pro
    Technicien
    Inscrit en
    Septembre 2005
    Messages
    1 225
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 53
    Localisation : France, Corse (Corse)

    Informations professionnelles :
    Activité : Technicien

    Informations forums :
    Inscription : Septembre 2005
    Messages : 1 225
    Points : 2 411
    Points
    2 411
    Par défaut
    J'utilise aussi l'excellentissime Notepad++

    Menu > Encodage > Encoder en UTF-8 (sans BOM)

  5. #25
    Expert confirmé
    Avatar de laurentSc
    Homme Profil pro
    Webmaster débutant perpétuel !
    Inscrit en
    Octobre 2006
    Messages
    10 382
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 60
    Localisation : France, Isère (Rhône Alpes)

    Informations professionnelles :
    Activité : Webmaster débutant perpétuel !
    Secteur : Industrie

    Informations forums :
    Inscription : Octobre 2006
    Messages : 10 382
    Points : 5 732
    Points
    5 732
    Billets dans le blog
    1
    Par défaut
    J'utilise aussi l'excellentissime Notepad++
    J'utilise Notepad++ pour le PHP et le js, par contre pour le html, j'utilise un éditeur wysiwyg (Kompozer, ex-NVU) (plus pratique)
    Menu > Encodage > Encoder en UTF-8 (sans BOM)
    J'ai fait ça, mais ça ne change rien ; j'ai voulu essayer "convertir en UTF-8 (sans BOM)", mais ça a beau être accessible depuis le menu, ça ne le prend pas...
    Il vaut mieux viser la perfection et la manquer que viser l'imperfection et l'atteindre. - Bertrand Russell

    Si la discussion est résolue, merci de cliquer sur le bouton

  6. #26
    Rédacteur/Modérateur

    Avatar de SpaceFrog
    Homme Profil pro
    Développeur Web Php Mysql Html Javascript CSS Apache - Intégrateur - Bidouilleur SharePoint
    Inscrit en
    Mars 2002
    Messages
    39 637
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 74
    Localisation : Royaume-Uni

    Informations professionnelles :
    Activité : Développeur Web Php Mysql Html Javascript CSS Apache - Intégrateur - Bidouilleur SharePoint
    Secteur : Industrie

    Informations forums :
    Inscription : Mars 2002
    Messages : 39 637
    Points : 66 658
    Points
    66 658
    Billets dans le blog
    1
    Par défaut
    Dans la page de traitement de l'upload en php...

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
     header('Content-Type: text/plain; charset=utf-8')
    Ma page Developpez - Mon Blog Developpez
    Président du CCMPTP (Comité Contre le Mot "Problème" dans les Titres de Posts)
    Deux règles du succès: 1) Ne communiquez jamais à quelqu'un tout votre savoir...
    Votre post est résolu ? Alors n'oubliez pas le Tag

    Venez sur le Chat de Développez !

  7. #27
    Expert confirmé
    Avatar de laurentSc
    Homme Profil pro
    Webmaster débutant perpétuel !
    Inscrit en
    Octobre 2006
    Messages
    10 382
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 60
    Localisation : France, Isère (Rhône Alpes)

    Informations professionnelles :
    Activité : Webmaster débutant perpétuel !
    Secteur : Industrie

    Informations forums :
    Inscription : Octobre 2006
    Messages : 10 382
    Points : 5 732
    Points
    5 732
    Billets dans le blog
    1
    Par défaut
    Même en rajoutant cette ligne, l'upload rajoute un espace après le a...
    Il vaut mieux viser la perfection et la manquer que viser l'imperfection et l'atteindre. - Bertrand Russell

    Si la discussion est résolue, merci de cliquer sur le bouton

  8. #28
    Expert éminent
    Avatar de Watilin
    Homme Profil pro
    En recherche d'emploi
    Inscrit en
    Juin 2010
    Messages
    3 093
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 35
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations professionnelles :
    Activité : En recherche d'emploi

    Informations forums :
    Inscription : Juin 2010
    Messages : 3 093
    Points : 6 754
    Points
    6 754
    Par défaut
    Donc pour résumer :
    • encoder le fichier en UTF-8 avec Notepad++
    • mettre le meta charset UTF-8
    • transférer les fichiers en mode binaire
    • faire traiter les fichier en UTF-8 par PHP ( setlocale(…) )
    • faire envoyer les fichiers en UTF-8 par PHP ( header(…) )
    • et tant qu’on y est, un petit mysql « SET NAMES UTF8 » quand on se connecte à la DB

    Perso j’ai jamais eu besoin de setlocale() mais on ne sait jamais.
    Ah oui, et vérifie que tu as bien mis enctype="multipart/form-data" à ton formulaire.

    Ça devrait le faire avec tout ça
    La FAQ JavaScript – Les cours JavaScript
    Touche F12 = la console → l’outil indispensable pour développer en JavaScript !

  9. #29
    Expert confirmé
    Avatar de laurentSc
    Homme Profil pro
    Webmaster débutant perpétuel !
    Inscrit en
    Octobre 2006
    Messages
    10 382
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 60
    Localisation : France, Isère (Rhône Alpes)

    Informations professionnelles :
    Activité : Webmaster débutant perpétuel !
    Secteur : Industrie

    Informations forums :
    Inscription : Octobre 2006
    Messages : 10 382
    Points : 5 732
    Points
    5 732
    Billets dans le blog
    1
    Par défaut
    Citation Envoyé par Watilin Voir le message
    Donc pour résumer :
    • encoder le fichier en UTF-8 avec Notepad++ Fait
    • mettre le meta charset UTF-8 Fait
    • transférer les fichiers en mode binaire Ca se fait où et comment ?
    • faire traiter les fichier en UTF-8 par PHP ( setlocale(…) ) Fait
    • faire envoyer les fichiers en UTF-8 par PHP ( header(…) ) Fait
    • et tant qu’on y est, un petit mysql « SET NAMES UTF8 » quand on se connecte à la DB Fait

    Perso j’ai jamais eu besoin de setlocale() mais on ne sait jamais.
    Ah oui, et vérifie que tu as bien mis enctype="multipart/form-data" à ton formulaire. Le problème (si c'en est un), c'est qu'il n'y a pas de formulaire... Pour uploader, j'utilise un truc hyper-complexe, un plugin de jquery avec des instructions js que je n'avais jamais vues ! (ce plugin me sert à avoir des barres de progression lors du téléchargement)

    Ça devrait le faire avec tout ça
    Je compte sur le transfert en mode binaire car pour l'instant, ça ne marche pas encore ; j'attends ton explication et espère que je saurai l'adapter au code du plugin.
    Il vaut mieux viser la perfection et la manquer que viser l'imperfection et l'atteindre. - Bertrand Russell

    Si la discussion est résolue, merci de cliquer sur le bouton

  10. #30
    Expert éminent
    Avatar de Watilin
    Homme Profil pro
    En recherche d'emploi
    Inscrit en
    Juin 2010
    Messages
    3 093
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 35
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations professionnelles :
    Activité : En recherche d'emploi

    Informations forums :
    Inscription : Juin 2010
    Messages : 3 093
    Points : 6 754
    Points
    6 754
    Par défaut
    Bonjour !
    J’imagine que le plugin doit utiliser un <form> dynamiquement généré, y’a pas trente-six façons d’envoyer des fichiers sans utiliser un applet (Flash, Java ou autre). Donc a priori il gère le bon encodage.

    Le mode binaire ça concerne le transfert FTP. Il y a deux modes : ASCII et binaire. Historiquement, ces modes servaient à transférer respectivement des fichiers de code source, censés ne contenir que de l’ASCII, ou bien des images.
    Le mode ASCII est plus rapide mais ne transfère pas correctement les caractères non-ASCII (et l’UTF-8 en fait partie)…

    Donc configure ton client FTP pour transférer toujours en mode binaire. Ou, si tu transfères sous cmd ou via un shell, tape « binary ».

    La FAQ JavaScript – Les cours JavaScript
    Touche F12 = la console → l’outil indispensable pour développer en JavaScript !

  11. #31
    Expert confirmé
    Avatar de laurentSc
    Homme Profil pro
    Webmaster débutant perpétuel !
    Inscrit en
    Octobre 2006
    Messages
    10 382
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 60
    Localisation : France, Isère (Rhône Alpes)

    Informations professionnelles :
    Activité : Webmaster débutant perpétuel !
    Secteur : Industrie

    Informations forums :
    Inscription : Octobre 2006
    Messages : 10 382
    Points : 5 732
    Points
    5 732
    Billets dans le blog
    1
    Par défaut
    J'ai vérifié : le transfert FTP est déjà en binaire...
    Il vaut mieux viser la perfection et la manquer que viser l'imperfection et l'atteindre. - Bertrand Russell

    Si la discussion est résolue, merci de cliquer sur le bouton

  12. #32
    Expert confirmé
    Homme Profil pro
    Inscrit en
    Septembre 2006
    Messages
    2 937
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations forums :
    Inscription : Septembre 2006
    Messages : 2 937
    Points : 4 358
    Points
    4 358
    Par défaut
    Pour ceux qui ne sont pas encore convaincus que manipuler en PHP des objets du file system contenant des caractères accentués dans leur nom est une mauvaise idée,
    cette page vous donnera quelques détails comparatifs sous différents OS :

    http://www.rooftopsolutions.nl/blog/...coding-and-php

  13. #33
    Expert confirmé
    Avatar de laurentSc
    Homme Profil pro
    Webmaster débutant perpétuel !
    Inscrit en
    Octobre 2006
    Messages
    10 382
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 60
    Localisation : France, Isère (Rhône Alpes)

    Informations professionnelles :
    Activité : Webmaster débutant perpétuel !
    Secteur : Industrie

    Informations forums :
    Inscription : Octobre 2006
    Messages : 10 382
    Points : 5 732
    Points
    5 732
    Billets dans le blog
    1
    Par défaut
    OK, il y a visiblement un problème, mais alors que proposes-tu, vu que j'uploade (en PHP, évidemment) des fichiers avec des caractères spéciaux ?
    Il vaut mieux viser la perfection et la manquer que viser l'imperfection et l'atteindre. - Bertrand Russell

    Si la discussion est résolue, merci de cliquer sur le bouton

  14. #34
    Expert confirmé
    Homme Profil pro
    Inscrit en
    Septembre 2006
    Messages
    2 937
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations forums :
    Inscription : Septembre 2006
    Messages : 2 937
    Points : 4 358
    Points
    4 358
    Par défaut
    Citation Envoyé par laurentSc Voir le message
    OK, il y a visiblement un problème, mais alors que proposes-tu, vu que j'uploade (en PHP, évidemment) des fichiers avec des caractères spéciaux ?
    a. que le nom sous lequel le fichier sera sauvegardé soit proposé dans un autre champ à l'utilisateur, et vous y filtrez les caractères accentués,

    b. que vous attribuez un nom quelconque au fichier sur le file system mais conserviez le nom original dans votre DB (en vérifiant que les caractères accentués soient conservés correctement… pour ne pas juste repousser le problème un peu plus loin…), ce qui implique au moins un champ en plus dans votre DB…

    c. si vous n'avez pas de besoin d'être multi-plateforme, que vous fassiez les mêmes tests que dans la page mentionnée ci-dessus et développiez votre propre fonction de filtrage (et son inverse…) qui fonctionne sur votre machine… (remplaçant les caractères accentués par des séquences \xNM …)

  15. #35
    Expert confirmé
    Avatar de laurentSc
    Homme Profil pro
    Webmaster débutant perpétuel !
    Inscrit en
    Octobre 2006
    Messages
    10 382
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 60
    Localisation : France, Isère (Rhône Alpes)

    Informations professionnelles :
    Activité : Webmaster débutant perpétuel !
    Secteur : Industrie

    Informations forums :
    Inscription : Octobre 2006
    Messages : 10 382
    Points : 5 732
    Points
    5 732
    Billets dans le blog
    1
    Par défaut
    J'ai un souci avec l'étape a), car j'ai beau être sûr de mon filtre (j'ai mis un espion pour connaître le nom sous lequel est censé être uploadé le fichier), l'upload continue à remplacer le "à" par "a " (un espace en trop).

    Pour être sûr que je ne me sois pas trompé, voici le code de l'upload :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
     
                 $uploaddir = '../../upload1/image/'; 
                 $file = $uploaddir . basename($_FILES['uploadfile']['name']); 
                 $file = strtr($file,
    			"ÀÁÂÃÄÅàáâãäåÒÓÔÕÖØòóôõöøÈÉÊËèéêëÇçÌÍÎÏìíîïÙÚÛÜùúûüÿÑñ",   
    			"aaaaaaaaaaaaooooooooooooeeeeeeeecciiiiiiiiuuuuuuuuynn");  
    // === on supprime les espaces
    			$file=str_replace(" ","_",$file); 
    //  === OE
    			$file=str_replace("Œ","OE",$file);
    			$file=str_replace("œ","oe",$file);
    			$file=str_replace("a“","oe",$file);  /* ligne nécessaire même si je ne comprends pas */
     
     
     
    ...
    move_uploaded_file ($_FILES['uploadfile']['tmp_name'], $file));
    Où est le problème ?
    Il vaut mieux viser la perfection et la manquer que viser l'imperfection et l'atteindre. - Bertrand Russell

    Si la discussion est résolue, merci de cliquer sur le bouton

  16. #36
    Membre émérite
    Avatar de Eric2a
    Homme Profil pro
    Technicien
    Inscrit en
    Septembre 2005
    Messages
    1 225
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 53
    Localisation : France, Corse (Corse)

    Informations professionnelles :
    Activité : Technicien

    Informations forums :
    Inscription : Septembre 2005
    Messages : 1 225
    Points : 2 411
    Points
    2 411
    Par défaut
    Re,

    Le souci vient sans aucun doute du plugin que tu utilises.

    Le code ci-dessous utilise la fonction fixEncoding() trouvée parmi les exemples de la fonction utf8_encode
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    function fixEncoding($in_str){
    $cur_encoding = mb_detect_encoding($in_str);
    if($cur_encoding == 'UTF-8' && mb_check_encoding($in_str,'UTF-8'))
    	return $in_str;
    else
    	return utf8_encode($in_str);
    }
     
    $uploaddir = '../../upload1/image/'; 
    $file = $uploaddir . fixEncoding( basename($_FILES['uploadfile']['name']) );
    On ne sait jamais...

  17. #37
    Expert confirmé
    Avatar de laurentSc
    Homme Profil pro
    Webmaster débutant perpétuel !
    Inscrit en
    Octobre 2006
    Messages
    10 382
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 60
    Localisation : France, Isère (Rhône Alpes)

    Informations professionnelles :
    Activité : Webmaster débutant perpétuel !
    Secteur : Industrie

    Informations forums :
    Inscription : Octobre 2006
    Messages : 10 382
    Points : 5 732
    Points
    5 732
    Billets dans le blog
    1
    Par défaut
    On ne sait jamais...
    oui, mais râté....
    Il vaut mieux viser la perfection et la manquer que viser l'imperfection et l'atteindre. - Bertrand Russell

    Si la discussion est résolue, merci de cliquer sur le bouton

  18. #38
    Expert confirmé
    Avatar de laurentSc
    Homme Profil pro
    Webmaster débutant perpétuel !
    Inscrit en
    Octobre 2006
    Messages
    10 382
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 60
    Localisation : France, Isère (Rhône Alpes)

    Informations professionnelles :
    Activité : Webmaster débutant perpétuel !
    Secteur : Industrie

    Informations forums :
    Inscription : Octobre 2006
    Messages : 10 382
    Points : 5 732
    Points
    5 732
    Billets dans le blog
    1
    Par défaut
    Comme je n'arrive pas à m'en sortir, je vais proscrire des noms de fichier à uploader les caractères à problème.
    Il vaut mieux viser la perfection et la manquer que viser l'imperfection et l'atteindre. - Bertrand Russell

    Si la discussion est résolue, merci de cliquer sur le bouton

  19. #39
    Expert confirmé
    Avatar de laurentSc
    Homme Profil pro
    Webmaster débutant perpétuel !
    Inscrit en
    Octobre 2006
    Messages
    10 382
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 60
    Localisation : France, Isère (Rhône Alpes)

    Informations professionnelles :
    Activité : Webmaster débutant perpétuel !
    Secteur : Industrie

    Informations forums :
    Inscription : Octobre 2006
    Messages : 10 382
    Points : 5 732
    Points
    5 732
    Billets dans le blog
    1
    Par défaut
    Comme je n'arrive pas à m'en sortir, je vais proscrire dans les noms de fichier à uploader les caractères à problème.
    Il vaut mieux viser la perfection et la manquer que viser l'imperfection et l'atteindre. - Bertrand Russell

    Si la discussion est résolue, merci de cliquer sur le bouton

+ Répondre à la discussion
Cette discussion est résolue.
Page 2 sur 2 PremièrePremière 12

Discussions similaires

  1. [PHP 5.0] traitement balise XML avec caractères ":" dans le nom
    Par JKlr67 dans le forum Langage
    Réponses: 6
    Dernier message: 28/02/2009, 00h38
  2. Rechercher une chaine de caractères dans le nom d'un fichier
    Par meuah dans le forum Macros et VBA Excel
    Réponses: 4
    Dernier message: 05/06/2008, 17h54
  3. Mettre le caractère % dans le nom d'une variable
    Par pelotudo dans le forum MATLAB
    Réponses: 3
    Dernier message: 03/04/2008, 17h20
  4. Limite des 218 caractères dans un nom de fichier
    Par Didier Gonard dans le forum Macros et VBA Excel
    Réponses: 0
    Dernier message: 28/02/2008, 14h28
  5. Changer des caractères dans les noms de fichiers
    Par ForgetTheNorm dans le forum Linux
    Réponses: 2
    Dernier message: 07/01/2008, 14h26

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo