Bonjour,

Ce sont les navigateurs qui par défaut encodent les caractères internationaux des URLs en UTF-8 et ce depuis au moins une décennie, pas PHP 5.5, ni PmWiki.

PmWiki.php possède une commande qui décode automatiquement de tels adresses en ISO8859-1, lignes 322-323. Si un des scripts nommés xlpage*.php n'est pas chargé, ça devrait marcher tout seul, pas besoin de URL-rewriting.

En effet, je viens de tester ça sur mon serveur local et je n'ai aucun problème, je peux accéder aux pages Élèves.Élèves et Élèves.Chloé.

Le navigateur en revanche affiche bien l'adresse :
  http://localhost/pmwiki/field-iso/index.php?n=%c9l%e8ves.Chlo%e9

pour que je puisse copier les octets exacts.

Mais mème si je charge :
http://localhost/pmwiki/field-iso/index.php?n=%C3%89l%C3%A8ves.Chlo%C3%A9

ou :
  http://localhost/pmwiki/field-iso/index.php?n=Élèves.Chloé

la bonne page sera affichée.

Il faut donc retirer toute modification de URL-Rewriting et toute inclusion de fichier commençant par "xlpage".

Petko

---
Change log     :  http://www.pmwiki.org/wiki/PmWiki/ChangeLog
Release notes  :  http://www.pmwiki.org/wiki/PmWiki/ReleaseNotes
If you upgrade :  http://www.pmwiki.org/wiki/PmWiki/Upgrades


On 2016-07-25 21:33, Pierre ROUZEAU wrote:
Bon, l'envoi de ce courriel (qui m'affiche des horreurs à l'écran) m'a
donné une réponse partielle. L'encodage UTF-8 fait deux caractères,
chacun de ces caractères pouvant se décoder en ISO.

En faisant un url rewrite lisant les deux caractères ISO et le
transformant dans le vrai caractère ISO attendu, je peux capturer le
groupe. Si la page a des caractères accentués, ça ne marche pas, mais
au moins, l'utilisateur atterrit sur le bon groupe. Sinon, je peux
faire un url rewrite pour chaque page. Pas très drôle, mais ça devrait
marcher.

éÉè


Le 25/07/2016 à 21:23, Pierre ROUZEAU a écrit :

Bonjour, sur pmwiki 2.2.71, j'ai des groupes et des pages qui comportent des lettres accentuées.

Les noms de fichiers associés sont en ISO-8859-1

Quand on appelle une page avec un lien interne, son nom est encodé correctement, par exemple un 'É' est codé '%c9'

Depuis PHP 5.5 (et même un peu avant, je crois), les appels externes sur les pages avec lettres accentuées ne fonctionnent pas.

Mon enregistreur de page 404 me montre que l'encodage des url est fait en UTF8 (lecture des variables système), soit pour un 'É', '%C3%89'

J'ai essayé de faire des url rewrite, mais si le rewriter m'envoie bien des caractères en ISO, il n'arrive pas à lire les caractères en UTF-8, j'ai aussi essayé en faisant des escape des '%'.

J'ai aussi essayé d'ajouter AddDefaultCharset ISO-8859 ou AddDefaultCharset ISO-8859, mais ça ne change rien.

Je pense que ce n'est pas le problème, puisque le rewriter encode bien en ISO. C'est la lecture d'adresses qui est transformée en UTF-8. Ditto si je tape 'É' dans ma barre d'adresse, c'est décodé en UTF-8.

J'ai passé plusieurs heures la-dessus et je ne vois aucune solution. Certains liens vers mes pages sont probablement très anciens et supprimer les accents ne changerait rien à l'échec de recherche de page.

Une idée ?


_______________________________________________
pmwiki-users-fr mailing list
pmwiki-users-fr@pmichaud.com
http://www.pmichaud.com/mailman/listinfo/pmwiki-users-fr

Répondre à