Ça vient de changer mais les apostrophes sont toujours inutilement codées maintenant %27 au lieu de ' directement (les valeurs sont entre guillemets ASCII ", il n'est pas nécessaire, et il ne FAUT PAS les réencoder sous forme URL-encodée ! Ce ne sont pas des URL's ! et ce seront des % qui seront enregistrés dans la base).
Bref ne pas utiliser urlencode() mais htmlquote() puis substituer """ par les apostrophes simples si htmlquote les a encodées ou ne propose pas de paramètre pour indiquer quelles caractères sont "safe" et ne nécessitent pas d'encodage. A mon avis il est suffisant d'utiliser ni urlencode() ni htmlquote(), mais une fonction xmlquote() qui sait (ou prend en paramètre) que les valeurs données sont entre guillemets doubles, ou bien qui détermine automatiquement quels guillemets ou apostrophes. Il est plus simple dans cette fonction : - tester si la chaîne contient la séquence de 9 caractères <![CDATA[ car il faut y remplacer au moins un des caractères sous la forme &#xx; avec la valeur du point de code Unicode entier (pas sous la forme %nn codant un octet UTF-8 pour l'inclusion dans une URL !!!) - tester ensuite si la chaîne contient des " et des ' - s'il n'y ni l'un ni l'autre, retourner la chaine source entre " (arbitrairement) - s'il n'y a que des ', retourner la chaine source entre " - s'il n'y a que des ", retourner la chaine source entre ' - s'il y a les deux, remplacer alors les " par ", puis retourner cette chaine entre " A priori les frameworks du language utilisé pour écrire rawedit doivent déjà inclure cette fonction (généralement c'est une fonction htmlquote() avec des paramètres optionnels pour les caractères "safe", ou une fonction quote() qui choisit et ajoute les guillemets ou apostrophes encadrant la chaine retournée, selon le language cible, ici du XML). Le 17 janvier 2013 01:44, Philippe Verdy <verd...@wanadoo.fr> a écrit : > A qui signaler une anomalie sur Osmose/rawedit: > > erreur "Can't parse XML data" : ce code est tel que généré par > "rawedit" (l'erreur est dans le tag description=*, ici écrit en > français): > > <way id="40404085" version="5"> > <nd ref="488562713" /> > <nd ref="488562714" /> > <nd ref="488562715" /> > <nd ref="488562716" /> > <nd ref="488562717" /> > <nd ref="488562718" /> > <nd ref="488562719" /> > <nd ref="488562720" /> > <nd ref="488562722" /> > <nd ref="488562723" /> > <nd ref="488562724" /> > <nd ref="488562726" /> > <nd ref="488562727" /> > <nd ref="488562728" /> > <nd ref="488562729" /> > <nd ref="488562713" /> > <tag k="attraction" v="expo" /> > <tag k="building" v="yes" /> > <tag k="description" v="Attraction d'après le film "Vingt Mille > Lieues sous les mers" (1954)" /> > <tag k="name" v="Les Mystères du Nautilus" /> > <tag k="source" v="cadastre-dgi-fr source : Direction Générale des > Impôts - Cadastre. Mise à jour : 2009" /> > <tag k="tourism" v="attraction" /> > <tag k="wikipedia:en" v="Les Mystères du Nautilus" /> > <tag k="wikipedia" v="fr:Les Mystères du Nautilus" /> > </way> > > rawedit insiste encore pour réencoder les apostrophes inutilement sous > la forme ' (peu lisible on peut mettre ' directement) > Mais il ne réencode pas les guillemets ASCII alors que c'est le > délimiteur de chaînes utilisé. > > (on peut contourner facilement en remplaçant ces guillemets à la main > sous la forme ", ou bien avec les guillemets français ici puisque > la valeur est données en français). _______________________________________________ Talk-fr mailing list Talk-fr@openstreetmap.org http://lists.openstreetmap.org/listinfo/talk-fr