making a base64 decoded text visible without changing “windows language for non unicode program settings” "

為{幸葍}努か 提交于 2019-12-11 00:56:09

问题


I encoded a text in a TMemo using base64 encoding tools ( like Indy tools ) but after decoding the result text, I just get some " ? " characters instead of the correct text . the original text is in persian language .

THE QUESTION IS :

I can see the decoded text if I set the windows"language for non unicode programs " on persian language . but I wanna make the decoded text visible without changing the " windows non unicode ... " .

Its about two weeks Im stuck on this ! I tried "UTF8ToWideString" , "UTF8ToUTF16","UTF8ToUnicodeString","UTF8ToString","UTF8Decode" and "UTF8EncodeToShortString" but non of them worked.

Encoding >

  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; 

Decoding >>

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;

I also tried delphi internal encoding tools . as following

// encoding >
memo2.Lines.Add(EncodeString(memo1.Lines.Text))
// decoding>

 memo3.lines.add(DecodeString(memo2.Lines.Text)) ;

回答1:


Try something like this instead:

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

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


来源:https://stackoverflow.com/questions/8984247/making-a-base64-decoded-text-visible-without-changing-windows-language-for-non

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!