2 votes

Afficher un texte décodé en base64 sans changer les paramètres de "langue Windows pour les programmes non-Unicode"

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)) ;

4voto

Remy Lebeau Points 130112

Essayez quelque chose comme ceci à la place:

memo2.Text := TIdEncoderMIME.EncodeString(memo1.Text, IndyUTF8Encoding);

memo3.Text := TIdEncoderMIME.DecodeString(memo2.Text, IndyUTF8Encoding);

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X