Précédent   Forum des professionnels en informatique > PHP > Langage > Fichiers
Fichiers Forum d'entraide sur les fichiers avec PHP. Avant de poster -> FAQ fichiers et Sources fichiers
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 07/06/2011, 17h45   #1
Membre Expert
 
Avatar de David Guillot
 
Homme David Guillot
Chef de projet en SSII
Inscription : mars 2004
Messages : 879
Détails du profil
Informations personnelles :
Nom : Homme David Guillot
Âge : 28
Localisation : France, Paris (Île de France)

Informations professionnelles :
Activité : Chef de projet en SSII
Secteur : High Tech - Multimédia et Internet

Informations forums :
Inscription : mars 2004
Messages : 879
Points : 1 149
Points : 1 149
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 :
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
__________________
Avant de poser une question ici :

Après résolution de votre question : un clic sur , un et un vote pour les personnes qui vous ont aidé
David Guillot est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 07/06/2011, 18h20   #2
Modérateur
 
Inscription : septembre 2010
Messages : 7 103
Détails du profil
Informations forums :
Inscription : septembre 2010
Messages : 7 103
Points : 8 466
Points : 8 466
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
__________________
http://blog.stealth35.com/
stealth35 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 08/06/2011, 10h44   #3
Membre Expert
 
Avatar de David Guillot
 
Homme David Guillot
Chef de projet en SSII
Inscription : mars 2004
Messages : 879
Détails du profil
Informations personnelles :
Nom : Homme David Guillot
Âge : 28
Localisation : France, Paris (Île de France)

Informations professionnelles :
Activité : Chef de projet en SSII
Secteur : High Tech - Multimédia et Internet

Informations forums :
Inscription : mars 2004
Messages : 879
Points : 1 149
Points : 1 149
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.
__________________
Avant de poser une question ici :

Après résolution de votre question : un clic sur , un et un vote pour les personnes qui vous ont aidé
David Guillot est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 08/06/2011, 10h48   #4
Modérateur
 
Inscription : septembre 2010
Messages : 7 103
Détails du profil
Informations forums :
Inscription : septembre 2010
Messages : 7 103
Points : 8 466
Points : 8 466
le problème vient uniquement de PHP qui ne gère pas l'utf-8 donc c'est pas possible.
__________________
http://blog.stealth35.com/
stealth35 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 08/06/2011, 11h22   #5
Membre Expert
 
Avatar de David Guillot
 
Homme David Guillot
Chef de projet en SSII
Inscription : mars 2004
Messages : 879
Détails du profil
Informations personnelles :
Nom : Homme David Guillot
Âge : 28
Localisation : France, Paris (Île de France)

Informations professionnelles :
Activité : Chef de projet en SSII
Secteur : High Tech - Multimédia et Internet

Informations forums :
Inscription : mars 2004
Messages : 879
Points : 1 149
Points : 1 149
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
__________________
Avant de poser une question ici :

Après résolution de votre question : un clic sur , un et un vote pour les personnes qui vous ont aidé
David Guillot est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité Cette discussion est résolue.
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 20h41.


 
 
 
 
Partenaires

Hébergement Web