zoukankan      html  css  js  c++  java
  • 使用INDY解决BASE64回车换行问题

    使用INDY解决BASE64回车换行问题

    使用DELPHI EncodeStream(),对流数据进行BASE64编译以后,每隔75个字符,就会添加回车换行符(#$D#$A),这会造成许多问题。

    网上许多解决方法,是对BASE64的字符串中的回车换行符,使用ReplaceStr(str,#$D#$A,''...)替换掉回车换行符。

    虽然这样可以解决问题,但多执行了操作,从而影响了程序的性能。

    下面使用INDY来帮助解决问题:

    INDY的BASE64编码,不会每隔75个字符,就会添加回车换行符(#$D#$A)。

    uses IdCoderMIME

    var IdEncoderMIME: TIdEncoderMIME;
    ms := TMemoryStream.Create; IdEncoderMIME := TIdEncoderMIME.Create(nil); try TZipTools.ZipStream(stream, ms); // zip ms.Position := 0; {$IF CompilerVersion <= 15} // d7 Result := IdEncoderMIME.Encode(ms); {$ELSE} Result := IdEncoderMIME.EncodeStream(ms); {$IFEND} finally ms.Free; IdEncoderMIME.Free; end;

     

    IdDeCoderMIME: TIdDeCoderMIME;
      ms := TMemoryStream.Create;
      IdDeCoderMIME := TIdDecoderMIME.Create(nil);
      try
        {$IF CompilerVersion <= 15}    // d7
        IdDeCoderMIME.DecodeToStream(str, ms);      // indy9
        {$ELSE}
        IdDeCoderMIME.DecodeStream(str, ms);        // indy10
        {$IFEND}
        ms.Position := 0;
        TZipTools.UnZipStream(ms, stream);  // unzip
      finally
        ms.Free;
        IdDeCoderMIME.Free;
      end;
    

      

     

  • 相关阅读:
    网络安全专家教你设置史上最安全的WiFi密码
    Python语言为什么被称为高级程序设计语言?
    常用组件
    小程序路由
    小程序的生命周期函数
    小程序案例-查询天气
    第一个小程序,获取用户名和用户头像
    小程序util.js的使用
    小程序文件夹目录分析 转
    特效 css3 渐变背景框
  • 原文地址:https://www.cnblogs.com/hnxxcxg/p/11096076.html
Copyright © 2011-2022 走看看