Salut à tous,

Lorsque j'essaye de faire un window.open sur un fichier dont le nom contient un "é" j'ai le &atild;&copy: (je sais pas les écrire) qui se mette en dessous.

Exemple


 http://domaine.com/mon_fichier_é.pdf
 
=>
NOT FOUND
The requested URL  http://domaine.com/mon_fichier_ã©.pdf  was not found on this server.


J'ai essayé toutes les fonctions que je connais (même celles qui n'avaient pas de sens en désépoir de cause).

Rien a faire. Je pourrais supprimer l'accent à l'upload mais j'aimerai ne pas avoir a le faire car c'est le seul de mes 5serveurs qui me fait ca.

Aussi si par exemple j'ouvre une url pour qu'il m'affiche la liste des fichiers à l'intérieur. Tous les nom de fichiers ont des ? dans des losanges à la place des caractères spéciaux. (je parle de par exemple http://domaine.com/fichiers_upload/)
[b]C'est ca qui m'embete le plus[/i]

Je n'ai aps d'encodage particulier dans apache.

Si quelqu'un à une idée je suis preneur

Rude

Edit : au niveau du code => (window.open(<?php echo $fichier; ?>)
j'ai essayé les fonctions utf8_decode,encode,htmlentites,_entity_decode etc ... (oui je suis déséspéré alors j'essaye aussi ce qui n'a pas de sens).
Modifié par ffwrude (04 Nov 2011 - 16:36)
Houla c'est embrouillé tout ça.
Va falloir un peu de méthode.

Déjà, si tu charges directement l'URL de ton fichier avec ton caractère "é" dans l'URL, depuis la barre d'adresse du navigateur par exemple, est-ce que la requête aboutit? C'est-à-dire, est-ce que le serveur arrive à traiter la requête et à envoyer le bon fichier? Normalement ça devrait marcher mais c'est à vérifier.

Maintenant, il faut s'attaquer à la question du percent-encoding pour les requêtes HTTP. Si je tape "http://example.com/é" comme adresse dans mon navigateur, le navigateur va en fait faire une requête HTTP GET pour "http://example.com/%C3%A9". Le navigateur s'occupe de faire la conversion comme un grand. Deux choses à retenir:

1. Tu peux toujours faire la conversion toi-même côté serveur et écrire des URLs avec du percent-encoding qui va bien. Comme ces URLs n'utilisent que des caractères ASCII, même si tu as des erreurs d'encodage dans tes scripts (par exemple tu écris des caractères UTF-8 dans une page servie en ISO-8859-1) ça ne posera pas de problème car la plupart des codages courants sont compatibles ASCII. (Là je pourrais expliquer en détail le pourquoi du comment mais bon RTFM quoi.)

2. Tu peux aussi te reposer sur la capacité du navigateur à faire des requêtes HTTP toutes belles et efficaces, mais pour ça il faudrait veiller à ce que tu n'aies pas de problème d'encodage dans tes fichiers (que ça soit tes pages HTML ou des scripts JS externes). Et là on retombe sur les problématiques habituelles de sortir des données correctes en UTF-8, et uniquement en UTF-8 parce qu'on est en 2011 bordel, l'ISO-8859-1 de vos grand-mères c'est fini.

Dans l'idéal il faudrait faire le (2), et une fois que c'est bien nickel faire aussi le (1) par sécurité. Smiley smile

PS: et je précède la question «comment on fait du percent-encoding en PHP?» par une réponse toute bête: j'en sais fichtre rien, je suis pas développeur PHP, mais je crois que si je voulais faire ça je regarderais dans la doc ou lib standard PHP s'il y a pas une fonction ou une classe pour ça, et sinon je chercherais une lib tierce qui fait ça bien. Smiley cligne
Modifié par fvsch (05 Nov 2011 - 00:11)
Salut,

Alors j'ai fait la méthode 2 mais ca me semblait tiré par les cheveux étant donné que j'avais jamais eu le soucis. Ca fonctionne bien (merci à vous).

Après je me suis demandé si y'avais pas une autre soluce parce que ca me semble bizarre. Déja avec urlencode ca fonctionne (sauf qu'il remplace les éspaces par des "+").

Ce qui me semble le plus bizarre c'est que lorsque j'ouvre une url sans page web dans le dossier genre : "http://domaine.com/fichiers_uploades/" j'ai aussi le problème d'encodage de caractères dans la liste des fichiers. Ca je trouve ca bizarre.

Je peux pas faire d'imprim écran malheureusement (car pas sur site) mais je sais pas si vous voyez ce que je veux dire.

En tout cas merci pour la soluce des URLS parce que ca marche niquel ca Smiley smile

Par contre je suis pas sur de l'ironie ou non dans ton message avec l'encodage ISO. Tu me dis que l'iso n'est plus le bienvenue et que je devrais tout encoder en UTF-8 ? J'ai l'habitude de tout faire en ISO (car la plupart des applis web que j'ai du améliorer l'était donc j'ai gardé l'habitude) mais je ne me suis jamais trop posé la question du pourquoi du comment...

Ca ne me dérange pas d'écrire mes caractère en html donc l'utf-8 me va aussi.

Merci bien
Modifié par ffwrude (07 Nov 2011 - 10:05)
ffwrude a écrit :
Par contre je suis pas sur de l'ironie ou non dans ton message avec l'encodage ISO. Tu me dis que l'iso n'est plus le bienvenue et que je devrais tout encoder en UTF-8 ? J'ai l'habitude de tout faire en ISO (car la plupart des applis web que j'ai du améliorer l'était donc j'ai gardé l'habitude) mais je ne me suis jamais trop posé la question du pourquoi du comment...

Disons que si tu crées un site en 2002, choisir ISO-8859-1 comme codage c'est pas idiot.
Tandis que si tu crées un site en 2011, choisir autre chose que UTF-8 c'est, hmm, dommage.

Unicode c'est bon, mangez-en.
Si tu lis l'anglais, il y a tout plein de trucs intéressants ici:
http://www.w3.org/International/

Sur OpenWeb:
http://openweb.eu.org/articles/jeux_caracteres
http://openweb.eu.org/articles/changer_pour_utf8

Un outil vachement bien pour obtenir les codages particuliers de caractères Unicode pour un langage donné (par exemples les séquences d'échappement en CSS ou en JavaScript):
http://rishida.net/tools/conversion/

Tous les caractères Unicode:
http://www.fileformat.info/info/unicode/char/search.htm
(et ici ils n'y sont pas tous mais c'est sympa: http://shapecatcher.com/ )
Modifié par fvsch (08 Nov 2011 - 23:47)