Bonjour
J'ai posté il y a quelques jours une question sur l'envoi en POST d'une chaîne qui se retrouvait modifiée côté PHP.
Je pensais que ça venait de du format d'envoi de la requête et une solution trouvée sur le net a résolu le problème.
Mais en fouillant un peu, je me suis aperçu que la source du problème ne vient pas de là mais de TNetEncoding.Base64.Encode.
J'ai dans une constante F une chaîne de caractères composant un texte en JSON.
Passé en base64, ça donne la chaîne suivante/
Code : Sélectionner tout - Visualiser dans une fenêtre à part G = 'ma chaine en JSON .......'; // un peu plus pertinente quand même :-)
F = 'eyJkYXRhYmFzZSI6ICJtb2R1bHJfcGVsaWNhbl9hc3N1cmFuY2VzIiwidXNlcl9pZCI6ICIxIiwidGFncyI6IHsiMTE3ODYiOiAiZXN0aW1hdGU6NjcyIn0sIm1vZHVscnNjYW4iOiAibW9kdWxyc2Nhbjo6OWY3NjJlYTJmMWRmMmNjMGUxMTM2NGY1ZThkNWYxYmM4NjYzNjBlNiJ9'
Si je fais
Je retrouve:
Code : Sélectionner tout - Visualiser dans une fenêtre à part Memo1.Lines.Text := TNetEncoding.Base64.Encode(G);
Passée dans un éditeur héxadécimal on voit qu'il y a des x0Dx0A insérés dans la chaîne.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3 eyJkYXRhYmFzZSI6ICJtb2R1bHJfcGVsaWNhbl9hc3N1cmFuY2VzIiwidXNlcl9pZCI6ICIxIiwi dGFncyI6IHsiMTE3ODYiOiAiZXN0aW1hdGU6NjcyIn0sIm1vZHVscnNjYW4iOiAibW9kdWxyc2Nh bjo6OWY3NjJlYTJmMWRmMmNjMGUxMTM2NGY1ZThkNWYxYmM4NjYzNjBlNiJ9
Une idée du pourquoi du comment ????
Complément: Je viens de trouver dans l'unité System.NetEncoding qu'il y a une notion de longueur de ligne (nombre de caractères par ligne) dans TBase64Encoding.EncodeBytes : CharsPerLine
Ceci doit expliquer cela mais je ne vois pas comment le modifier en utilisant directement TNetEncoding.Base64.Encode
Partager