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.

Code : Sélectionner tout - Visualiser dans une fenêtre à part
G = 'ma chaine en JSON .......'; // un peu plus pertinente quand même :-)
Passé en base64, ça donne la chaîne suivante/

F = 'eyJkYXRhYmFzZSI6ICJtb2R1bHJfcGVsaWNhbl9hc3N1cmFuY2VzIiwidXNlcl9pZCI6ICIxIiwidGFncyI6IHsiMTE3ODYiOiAiZXN0aW1hdGU6NjcyIn0sIm1vZHVscnNjYW4iOiAibW9kdWxyc2Nhbjo6OWY3NjJlYTJmMWRmMmNjMGUxMTM2NGY1ZThkNWYxYmM4NjYzNjBlNiJ9'

Si je fais

Code : Sélectionner tout - Visualiser dans une fenêtre à part
Memo1.Lines.Text := TNetEncoding.Base64.Encode(G);
Je retrouve:

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
eyJkYXRhYmFzZSI6ICJtb2R1bHJfcGVsaWNhbl9hc3N1cmFuY2VzIiwidXNlcl9pZCI6ICIxIiwi
dGFncyI6IHsiMTE3ODYiOiAiZXN0aW1hdGU6NjcyIn0sIm1vZHVscnNjYW4iOiAibW9kdWxyc2Nh
bjo6OWY3NjJlYTJmMWRmMmNjMGUxMTM2NGY1ZThkNWYxYmM4NjYzNjBlNiJ9
Passée dans un éditeur héxadécimal on voit qu'il y a des x0Dx0A insérés dans la chaîne.

Nom : 2019-11-18_140352.png
Affichages : 681
Taille : 25,4 Ko

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