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 de fichiers et caractères spéciaux [Encodage]


Sujet :

Langage PHP

  1. #1
    Invité
    Invité(e)
    Par défaut Renommage de fichiers et caractères spéciaux
    à tous !

    Je suis face à un vrai problème qui commence à me les briser menu :
    - Objectif : renommer "héhé.doc" en "01 - héhé.doc"
    - Contexte : appli PHP hébergée sur Windows ou Linux (selon les environnements dév/prod) et codée en UTF-8
    - Code :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    $file = 'héhé.doc';// fichier existant, valeur récupérée par un scandir
    rename($file, '01 - '.$file);
    - Résultat : "01 - héhé.doc", sous Windows et sous Linux
    - Précision 1 : Pas la peine de me dire qu'un nom de fichier n'est pas censé contenir de caractères spéciaux (hors bien sûr "/\:<>?|"), mes OS supportent très bien ces noms de fichiers, je veux juste obtenir le même résultat en PHP
    - Précision 2 : Je ne peux pas passer par un utf8_decode() de ma chaîne de caractères, car certains de mes noms de fichiers comportent des caractères qui ne sont pas dans le charset ISO-8859-1. J'ai essayé de tâtonner en direction des fonction mb_string et iconv mais je ne les maîtrise pas suffisamment pour obtenir quelque chose de satisfaisant
    - Question : Qu'est-ce que je fais mal ?

    Merci d'avance

  2. #2
    Expert éminent sénior

    Profil pro
    Inscrit en
    Septembre 2010
    Messages
    7 920
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2010
    Messages : 7 920
    Points : 10 727
    Points
    10 727
    Par défaut
    pas trop le choix de faire un utf-8 decode, ou alors surprime les caractères no ASCII ou fait de de la translittération

  3. #3
    Invité
    Invité(e)
    Par défaut
    Tout d'abord merci pour ta réponse

    Je ne connaissais pas la translittération, ça marche plutôt bien !

    Mais je n'ai pas envie de m'arrêter à ça : mes clients veulent retrouver leurs fichiers exactement comme ils les ont uploadés dans mon application.

    Y aurait-il un moyen de détecter le charset utilisé par le filesystem qui héberge mes fichiers, pour pouvoir faire l'iconv() qui va bien et n'utiliser la translittération qu'en dernier recours ? J'effectue mes tests sur un serveur Windows qui supporte parfaitement d'avoir des fichiers ayant des caractères polonais dans leur nom ; j'aimerais pouvoir les manipuler sans les altérer.

  4. #4
    Expert éminent sénior

    Profil pro
    Inscrit en
    Septembre 2010
    Messages
    7 920
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2010
    Messages : 7 920
    Points : 10 727
    Points
    10 727
    Par défaut
    le problème vient uniquement de PHP qui ne gère pas l'utf-8 donc c'est pas possible.

  5. #5
    Invité
    Invité(e)
    Par défaut
    D'accord je vois, c'est un exemple concret du non-support natif d'Unicode par PHP. Je vais me contenter de translittération !

    Merci en tout cas

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. [PowerShell] suppression de fichier avec caractère spéciaux
    Par wolfaste dans le forum Scripts/Batch
    Réponses: 2
    Dernier message: 17/10/2014, 09h36
  2. [Batch] Lecture de fichier avec caractères spéciaux
    Par Altrensa dans le forum Scripts/Batch
    Réponses: 3
    Dernier message: 19/12/2012, 14h47
  3. lire fichier avec caractères spéciaux
    Par expertax dans le forum Linux
    Réponses: 1
    Dernier message: 25/05/2011, 12h01
  4. [AC-2002] Problème avec Import de fichiers et caractères spéciaux
    Par volganne dans le forum VBA Access
    Réponses: 0
    Dernier message: 20/04/2010, 09h57
  5. Réponses: 2
    Dernier message: 03/06/2009, 17h47

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