Bonjour à tous,

Mon site web est encodé en UTF-8. J'ai des images dont le nom contient des accents (par exemple : Café.jpg). J'utilise un script PHP pour générer les liens xHTML pour accéder à ces fichiers et le "é" est échappé en %C3%A9, ce qui est bien normal pour de l'UTF-8.

En local (avec xampp sous Windows), j'arrive à accéder au fichier quand l'URL est sous cette forme (Caf%C3%A9.jpg). Cependant, sur mon serveur (loué, sous Linux), Caf%C3%A9.jpg ne fonctionne pas. Il faut que je décode l'UTF-8 et que je ré-encode le lien, qui devient Caf%E9.jpg.

Je trouve un peu lourd de devoir disposer de deux versions de mon script (une qui garde l'UTF-8 tel quel et l'autre qui le décode avant d'échapper les caractères accentués). J'ai donc essayé de changer le "%C3%A9" en "%E9" avec mod_rewrite : malheureusement ça ne fonctionne pas.

Wikipédia permet d'accéder sans problème à des fichiers qui contiennent des accents (par exemple : l'image Strohräder.jpg), donc je sais que c'est possible de le faire. La question est : comment ?

Merci d'avance !

STL
stl a écrit :
La question est : comment ?

L'url exacte est:
http://upload.wikimedia.org/wikipedia/commons/4/43/Strohr%C3%A4der.jpg

Certains navigateurs récents (Firefox à partir de sa version 3, IE7 il me semble mais ce serait à vérifier, d'autres encore...) afficheront http://upload.wikimedia.org/wikipedia/commons/4/43/Strohräder.jpg et feront la conversion à la volée. S'ils reçoivent l'URL invalide http://upload.wikimedia.org/wikipedia/commons/4/43/Strohräder.jpg , ils feront également la conversion (ça je crois que tous les navigateurs actuels le font).

Quoi qu'il en soit au niveau du navigateur, le serveur reçoit bien un GET /wikipedia/commons/4/43/Strohr%C3%A4der.jpg, et se débrouille avec.

Deux solutions à ton problème:
- corriger la configuration du serveur si c'est possible et si elle pose problème;
- bannir les caractères invalides de tes URL pour qu'aucune opération de percent encoding ne soit nécessaire.

Pour information, la forme correcte d'un é dans une URL est bien %C3%A9, et pas %A9.
Modifié par Florent V. (02 Feb 2009 - 14:44)