|  | 
 
| delphi 的 加密解密都是针对 Byte 来的。 具体表现是 TBytes 和 TStream。
 字符串,那是最终封装,方便使用而已。
 delphi 内置的封装,都是 UTF8 编码的。
 例如 Base64 UrlEncode 这些 都是 默认 UTF8 。
 
 所以,自己写的 加密解密 编码解码。
 也应如下设计。
 
 注意 不要用 “复制代码” 这个按钮。
 
 
 
 当然 UTF8 换成 ANSI 或 Unicode 等 其他编码也是很容易的。
 
 下面是按 TStream 设计。
 
 
 TBytes 和 TStream 是可以互相转换的
 AStream := TBytesStream.Create(ABytes) //TBytes 转为 TStream
 下面是 反过来 TStream 转为 TBytes;
 SetLength(ABytes, AStream.Size - AStream.Position);
 AStream.Read(ABytes, AStream.Size - AStream.Position);
 也可以通过下面的代码转换就是麻烦些
 [mw_shl_code=delphi,true]
 ABytesStream := TBytesStream.Create(nil);
 try
 ABytesStream.CopyFrom(AStream, 0);
 ABytes := ABytesStream.Bytes;
 SetLength(ABytes, ABytesStream.Size);
 finally
 FreeAndNil(ABytesStream);
 end;
 [/mw_shl_code]
 
 上述 所有代码中的  UTF8 换成  ANSI ,立即就能支持 D7 版本编码或加密结果了。
 
 
 如果你不知道结果是什么编码的,可以先用 内存流 代替字符串流(TMemoryStream 代替 TStringStream)。
 先将结果保存到内存中。
 然后你再去分析这个结果是什么编码的。
 当然文件流(TFileStream)也可以,这样就去分析这个文件是什么编码的。
 
 例如
 
 
 
 如果数据中包含了 BOM 其实就非常好办了
 AStringList.LoadFromStream(AStream);
 就可以得到字符串了。
 但是这种情况,很少见。
 | 
 |