1 pièce(s) jointe(s)
TNetEncoding.Base64.Encode et insertion de sauts de ligne
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:
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:
Memo1.Lines.Text := TNetEncoding.Base64.Encode(G);
Je retrouve:
Code:
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.
Pièce jointe 518183
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