PC SOFT

FORUMS PROFESSIONNELS
WINDEVWEBDEV et WINDEV Mobile

Accueil → WINDEV 2025 → ? à la place d'un é dans un service web rest Windev
? à la place d'un é dans un service web rest Windev
Débuté par Jean, 19 fév. 2026 18:55 - 4 réponses
Posté le 19 février 2026 - 18:55
Bonjour,

J'ai créé un service web Rest avec Windev. Il y a un point d'entrée de type Post avec le format de la requête et de la réponse JSON (UTF8).
La procédure appelée attend un buffer en paramètre et le point d'entrée est défini avec une désérialisation automatique dans ce buffer.

Dans la procédure j'ai une classe contenant des membres de types chaînes. Au début de la procédure j'utilise la fonction deserialise() pour affecter les membres de ma classe à partir de mon buffer.

Lorsque je regarde le buffer avec le débogueur il y a plein de caractères caract(0). Je suis obligé de les enlever car la désérialisation plante avec ces caract(0).

J'ai essayé de faire un htmlVersTexte() avec mon buffer pour mettre à jour une chaine (Ansi par défaut). Cela m'enlève les caract(0) et je peux faire le désérialise() vers une instance de ma classe.

Par contre les lettres accentuées ne sont pas bien affectée dans les membres de ma classe. Les é deviennent des ?

J'ai essayé pas mal de transformations avec du Utf8, de l'unicode et je n'arrive pas à obtenir les é. Lorsque je regarde les valeurs des chaînes dans le débogueur je vois bien les é mais la désérialisation json me met des ?

Je dois rater quelque chose mais je ne vois pas quoi. J'ai testé en local avec WDTestRest et Soapui après déploiement mais c'est pareil.

Merci d'avance pour votre aide.
Posté le 20 février 2026 - 15:30
Le problème vient sans doute de la fonction Désérialise. A ma connaissance, elle fonctionne bien seulement si on désérialise un objet ou une structure Windev et qui a été sérialisée avec la fonction Sérialise.
Selon la doc, on récupère une chaine Ansi ou un Buffer, d'ou l'erreur avec les caractères accentués.
Question: as-tu sérialisé avec la fonction Windev ?



Jean a écrit :
Bonjour,

J'ai créé un service web Rest avec Windev. Il y a un point d'entrée de type Post avec le format de la requête et de la réponse JSON (UTF8).
La procédure appelée attend un buffer en paramètre et le point d'entrée est défini avec une désérialisation automatique dans ce buffer.

Dans la procédure j'ai une classe contenant des membres de types chaînes. Au début de la procédure j'utilise la fonction deserialise() pour affecter les membres de ma classe à partir de mon buffer.

Lorsque je regarde le buffer avec le débogueur il y a plein de caractères caract(0). Je suis obligé de les enlever car la désérialisation plante avec ces caract(0).

J'ai essayé de faire un htmlVersTexte() avec mon buffer pour mettre à jour une chaine (Ansi par défaut). Cela m'enlève les caract(0) et je peux faire le désérialise() vers une instance de ma classe.

Par contre les lettres accentuées ne sont pas bien affectée dans les membres de ma classe. Les é deviennent des ?

J'ai essayé pas mal de transformations avec du Utf8, de l'unicode et je n'arrive pas à obtenir les é. Lorsque je regarde les valeurs des chaînes dans le débogueur je vois bien les é mais la désérialisation json me met des ?

Je dois rater quelque chose mais je ne vois pas quoi. J'ai testé en local avec WDTestRest et Soapui après déploiement mais c'est pareil.

Merci d'avance pour votre aide.
Posté le 20 février 2026 - 17:47
Bonjour,

Le json n'est pas sérialisé par Windev, ceux qui vont utiliser le webservice n'utilisent pas Windev. J'ai fait mon test avec Soapui et WDRestTest.

C'est très gênant de ne pas pouvoir récupérer des données propres car cela va polluer la base de données. J'espère qu'il y a une solution de transcription des caractères quelque part.

Jean

Samuel GUSTAVE a écrit :
Le problème vient sans doute de la fonction Désérialise. A ma connaissance, elle fonctionne bien seulement si on désérialise un objet ou une structure Windev et qui a été sérialisée avec la fonction Sérialise.
Selon la doc, on récupère une chaine Ansi ou un Buffer, d'ou l'erreur avec les caractères accentués.
Question: as-tu sérialisé avec la fonction Windev ?



Jean a écrit :
Bonjour,

J'ai créé un service web Rest avec Windev. Il y a un point d'entrée de type Post avec le format de la requête et de la réponse JSON (UTF8).
La procédure appelée attend un buffer en paramètre et le point d'entrée est défini avec une désérialisation automatique dans ce buffer.

Dans la procédure j'ai une classe contenant des membres de types chaînes. Au début de la procédure j'utilise la fonction deserialise() pour affecter les membres de ma classe à partir de mon buffer.

Lorsque je regarde le buffer avec le débogueur il y a plein de caractères caract(0). Je suis obligé de les enlever car la désérialisation plante avec ces caract(0).

J'ai essayé de faire un htmlVersTexte() avec mon buffer pour mettre à jour une chaine (Ansi par défaut). Cela m'enlève les caract(0) et je peux faire le désérialise() vers une instance de ma classe.

Par contre les lettres accentuées ne sont pas bien affectée dans les membres de ma classe. Les é deviennent des ?

J'ai essayé pas mal de transformations avec du Utf8, de l'unicode et je n'arrive pas à obtenir les é. Lorsque je regarde les valeurs des chaînes dans le débogueur je vois bien les é mais la désérialisation json me met des ?

Je dois rater quelque chose mais je ne vois pas quoi. J'ai testé en local avec WDTestRest et Soapui après déploiement mais c'est pareil.

Merci d'avance pour votre aide.
Membre enregistré
4 342 messages
Posté le 20 février 2026 - 19:11
Bonjour,
Si l'on pouvait avoir un (petit) JSON (balisé) que tu envoies pour la désérialisation, cela nous permettrait de t'aider plus facilement
Quoiqu'il en soit, le \0 provient certainement d'un Null Terminated String
--
Il y a peut être plus simple, mais, ça tourne
Quand tout a échoué, utilise l'option RTFM
Message modifié, 20 février 2026 - 19:17
Posté le 23 février 2026 - 09:58
Bonjour,

Je viens de faire un test dans un petit projet en 2026 et j'ai l'impression que ce souci a été corrigé sur cette version. J'ai bien la lettre accentuée dans ma structure après désérialisation. Mon projet était dans une version 2024. Je vais migrer mon service web sur la 2026 pour vérifier que tout va bien. C'est surprenant car en Windev 24 cela fonctionnait, en 2024 (version de mon client) j'ai ce souci et en 2026 cela fonctionne à nouveau.

Merci d'avoir pris le temps de me répondre.

Voroltinquo a écrit :
Bonjour,
Si l'on pouvait avoir un (petit) JSON (balisé) que tu envoies pour la désérialisation, cela nous permettrait de t'aider plus facilement
Quoiqu'il en soit, le \0 provient certainement d'un Null Terminated String
--
Il y a peut être plus simple, mais, ça tourne
Quand tout a échoué, utilise l'option RTFM