J'ai encodé un texte dans un TMemo en utilisant des outils d'encodage base64 (comme les outils Indy), mais après avoir décodé le texte résultant, je n'obtiens que des caractères " ? " au lieu du texte correct. Le texte original est en langue persane.
LA QUESTION EST :
Je peux voir le texte décodé si je définis la "langue pour les programmes non unicode de Windows" en langue persane. Mais je veux rendre le texte décodé visible sans changer les "programmes non unicode de Windows".
Cela fait environ deux semaines que je suis bloqué sur ça ! J'ai essayé "UTF8ToWideString", "UTF8ToUTF16", "UTF8ToUnicodeString", "UTF8ToString", "UTF8Decode" et "UTF8EncodeToShortString" mais aucun d'entre eux n'a fonctionné.
Encodage >
var input,output:TstringStream;
begin
input:=nil;
output:=nil;
input:=TstringStream.Create;
output:=TstringStream.Create;
memo1.Lines.SaveToStream(input);
input.Position:=0;
encoder.Encode(input,output);
output.Position:=0;
memo2.Clear;
memo2.Lines.LoadFromStream(output);
input.Free;
output.Free
end;
Décodage >>
var input,output:TStringStream;
begin
memo3.Clear;
input:=nil;
output:=nil;
input:=TStringStream.Create();
output:=TStringStream.Create();
memo2.Lines.SaveToStream(input);
input.Position:=0;
decoder.DecodeBegin(output);
decoder.Decode(input);
decoder.DecodeEnd;
output.Position:=0 ;
memo3.Lines.Add(output.DataString);
end;
J'ai également essayé les outils d'encodage internes de Delphi, comme suit
// encodage >
memo2.Lines.Add(EncodeString(memo1.Lines.Text))
// décodage>
memo3.lines.add(DecodeString(memo2.Lines.Text)) ;