OVH Community, votre nouvel espace communautaire.

Supprimer les caractères accentués dans le nom d'un fichier envoyé par formulaire


Abazada
03/09/2009, 11h59
Citation Envoyé par code_grabber
y'en a qui savent faire et qu'ont pas eu de problèmes
Je confirme

La seule chose avec UTF8 est que quand on choisit d'y passer il ne faut pas le faire à moitié. Perso j'avais tout basculé d'un coup : la base de données et ses données, les sources (php, html, ...) et leur environement de dev, tous les outils (dont PuTTY) et pas vu l'ombre d'un soucis

code_grabber
03/09/2009, 10h31
Citation Envoyé par Daniel60
Moi, ce que j'en dit...
Y'en a qu'ont essayé, ils ont eu des problèmes
y'en a qui savent faire et qu'ont pas eu de problèmes

Daniel60
02/09/2009, 19h26
Moi, ce que j'en dit...
Y'en a qu'ont essayé, ils ont eu des problèmes

Abazada
02/09/2009, 18h49
Citation Envoyé par Daniel60
Absolument pas : à moins d'aimer les problèmes les noms de fichier doivent être en ASCII, sans espaces, et sans caractères spéciaux.
Et d'où sort cette "obligation" ?
Et il faut aussi les limiter à 8 caractères comme au temps du DOS peut-être ?

Dans de nombreux cas il est très pratique de créer des fichiers accentués, le nom étant encodé en utf8. Ca ne pose pas le moindre problème pour l'utilisation, le transfert (FTP ou autre) et la manipulation (PuTTY propose l'encodage UTF8 dans ses options). Aucune raison donc de s'en priver si ça facilite les choses.

Pour les URL c'est une tout autre histoire. Il y a des RFC à respecter et des fonctions telles que rawurlencode() pour y aider.

Daniel60
02/09/2009, 17h55
Absolument pas : à moins d'aimer les problèmes les noms de fichier doivent être en ASCII, sans espaces, et sans caractères spéciaux. Et c'est tout. Et il en va de même pour les URL.

code_grabber
02/09/2009, 15h14
désolé mais dans tout ce qui concerne les caractères c'est toujours l'encodage qui détermine quels sont les caractères possibles ou pas.
si l'on suit un raisonnement basique comme celui là alors comment s'en sort t'on avec des caractères cyrilliques ???

Daniel60
02/09/2009, 14h20
Citation Envoyé par code_grabber
n'importe quoi !!!!!!
les caractères accentués ne dépendent que d'une chose : l'encodage.
Avez-vous déjà essayé de faire des noms de fichier codés en utf-8.
Oui, c'est vraiment n'importe quoi !

code_grabber
02/09/2009, 14h13
Citation Envoyé par Ukri
merci mais c'est une fonction trouvée, je n'ai plus la source

En fait les caractères accentués, ça dépend de bcp de choses, navigateur, serveur, etc. bref je me fatigue plus c'est plus propre comme ça !

n'importe quoi !!!!!!
les caractères accentués ne dépendent que d'une chose : l'encodage.

Ukri
29/06/2009, 18h17
Citation Envoyé par Inter240
Bonjour,

Je sens que quelque chose m'échappe, car je transfert des fichiers contenant des
accents via le ftp, et je n'ai pas eu de problèmes.

Les accents sortent sur les pages comme dans les fichiers html ou php.

Ceci dit la fonction de Ukri, c'est du simple et efficace. Bravo.

merci mais c'est une fonction trouvée, je n'ai plus la source

En fait les caractères accentués, ça dépend de bcp de choses, navigateur, serveur, etc. bref je me fatigue plus c'est plus propre comme ça !

Inter240
29/06/2009, 16h52
Bonjour,

Je sens que quelque chose m'échappe, car je transfert des fichiers contenant des
accents via le ftp, et je n'ai pas eu de problèmes.

Les accents sortent sur les pages comme dans les fichiers html ou php.

Ceci dit la fonction de Ukri, c'est du simple et efficace. Bravo.

Ukri
25/06/2009, 22h48
Hello

Je sais pas si tu as résolu ton pb.
Perso j'utilise ce bout de code pour nettoyer les noms de fichiers...
Code PHP:
function convert($texte) { 
    
$arrSearch =  Array ('é','è','ë','ê','à','ä','â','ù','ü','û','ö','ô','ï','î',' ','-','Ï','ç','É','È','Ë','Û');
    
$arrReplace =  Array ('e','e','e','e','a','a','a','u','u','u','o','o','i','i','','','i','c','e','e','e','u');
    
$newtext str_replace($arrSearch$arrReplace$texte);
    return 
$newtext;


jstaeble
19/06/2009, 18h48
Bonjour,

Je galère depuis longtemps sur ce problème ; j'ai besoin d'utiliser un formulaire d'envoi de fichiers sur une partie privée de mon site (donc pas de lien), mais j'ai des problèmes avec notamment les accents. En effet, un fichier contenant un accent devient intouchable sur le ftp, et pose pas mal d'autres problèmes.

J'ai essayé plein de choses, la dernière en date est celle-ci :

Code PHP:
 $infosfichier pathinfo($_FILES['fichier' $i]['name']);
            
$extension_upload $infosfichier['extension'];
            
$nomdefichier $infosfichier['filename'];
            
$extensions_interdites = array('php''html''cgi');
if (!
in_array($extension_upload$extensions_interdites) && !preg_match("#[àâäéèêëîïôöùûüÿ]#i",$nomdefichier))
            {
                if(
move_uploaded_file($_FILES['fichier' $i]['tmp_name'], 'Partitions/' basename($_FILES['fichier' $i]['name'])))
                {    
$toutestok++;    }
            } 
Mais ce code ne fonctionne pas ; je peux envoyer tous les fichiers contenant un nom accentué que je veux ! Bon après heureusement c'est pour un truc privé (seuls une dizaine de personnes y ont accès) mais bon ça peut vite arriver qu'on ne fasse pas attention et qu'on me bloque mon ftp.

Si vous avez une idée je suis preneur. Pour info,

Code PHP:
print basename($_FILES['fichier']['name']); 
fonctionne parfaitement et affiche le nom du fichier (Identité.jpg dans mon cas), mais

Code PHP:
preg_match("#[àâäéèêëîïôöùûüÿ]#i",basename($_FILES['fichier']['name'])) ? 'oui':'non'
Renvoie non, toujours en envoyant Identité.jpg