J'ai déjà essayé sans succès UTF-8, mais que faut-il comprendre par "convertir le fichier PHP" ?(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" ?(et convertissez 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
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
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 ?bref si votre éditeur de texte ne gère pas les encodings : vous n'y arriverez 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
J'utilise aussi l'excellentissime Notepad++
Menu > Encodage > Encoder en UTF-8 (sans BOM)
J'utilise Notepad++ pour le PHP et le js, par contre pour le html, j'utilise un éditeur wysiwyg (Kompozer, ex-NVU) (plus pratique)J'utilise aussi l'excellentissime Notepad++
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...Menu > Encodage > Encoder en UTF-8 (sans BOM)
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
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 !
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
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 !
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
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 !
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
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
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
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 …)
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 :Où est le problème ?
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));
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
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
On ne sait jamais...
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']) );
oui, mais râté....On ne sait jamais...
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
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
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
Vous avez un bloqueur de publicités installé.
Le Club Developpez.com n'affiche que des publicités IT, discrètes et non intrusives.
Afin que nous puissions continuer à vous fournir gratuitement du contenu de qualité, merci de nous soutenir en désactivant votre bloqueur de publicités sur Developpez.com.
Partager