PC SOFT

FORUMS PROFESSIONNELS
WINDEVWEBDEV et WINDEV Mobile

Accueil → WINDEV 2025 → URLEncode n'encode pas tous les caractères spéciaux
URLEncode n'encode pas tous les caractères spéciaux
Débuté par Cecile D, 25 sep. 2023 14:22 - 6 réponses
Membre enregistré
5 messages
Posté le 25 septembre 2023 - 14:22
Bonjour,

J'utilise la fonction URLEncode pour encoder une chaîne. Mais cette fonction n'encode pas tous les caractères spéciaux contenus dans la chaîne, comme le @ et le : notamment, qui devraient être remplacés respectivement pas %40 et %3A.
Pour l'espace en revanche, j'ai bien un %20.

J'ai essayé différents type d'encodage, mais rien n'y fait. Auriez-vous la solution à ce problème ?

Merci d'avance

--
Cecile D.
Membre enregistré
310 messages
Posté le 25 septembre 2023 - 14:47
Bonjour
Pour un mode stricte, il faut utiliser la fonction avec le paramètre encodeURLParameter

Bon dev !
Membre enregistré
5 messages
Posté le 25 septembre 2023 - 15:13
Bonjour Samir,

Merci pour cette réponse rapide. Déjà testé avec encodeURLParamètre, mais pour le coup, il est trop strict! L'API de mon client n'en demande pas tant.

Exemple pour une date/heure : 2023-09-25 09:29:35, l'API attend ceci 2023-09-25+09%3A29%3A35
URLEncode("2023-09-25 09:29:35", encodeURLParamètre) retournera 2023%2D09%2D25 09%3A29%3A35

La solution serait donc de remplacer les caractères spéciaux un par un... ?

--
Cecile D.
Posté le 26 septembre 2023 - 09:18
bonjour

seule solution : tu t'écris ta propre fonction dans laquelle tu encodes les caractères souhaités.
pas compliquée à écrire.
et totalement à ta main.

éventuellement tu peux rajouter un paramètre de type "pas stricte", "stricte", "très stricte".


cordialement
titou44
Membre enregistré
5 messages
Posté le 03 octobre 2023 - 16:39
Merci titou44, j'ai effectivement encodé les caractères souhaités un à un.

--
Cecile D.
Posté le 03 octobre 2023 - 21:53
bienvenue parmi ceux/celles qui se font leur propre collection de fonctions 'système' maison.

titou44
Membre enregistré
235 messages
Posté le 06 novembre 2023 - 17:48
Bonjour à vous

J'ai je pense un problème similaire avec URLEncode(sURL,toutes options comprise)

qui encode certes en UTF8 mais pas le même que Javascript

Pour réglé le problème j'utilise le code suivant:
sURL = ChaîneVersUTF8(sURL)
reqCreationVersion.URL = URLEncode(sURL,encodeURLDepuisUTF8)


Grâce à cela je n'est plus aucun problème avec les accents, les espaces et les caractères suivant : @ { ~ [ ( - | ` _ ç ^ / * - +

Attention & et # sont bien encodé mais réservé dans le traitement du post.

Note : en windev vous pouvez faire l'opération inverse pour retrouver votre chaine
sURL = URLDecode(reqCreationVersion.URL,encodeURLDepuisUTF8)
sURL = UTF8VersChaîne(sURL)


En espérant que cela vous aidera.
Cordialement