TBlobField(<Field>).SaveToStream 用 delphi 2010 剪切最后一个 NULL 字符

TBlobField(<Field>).SaveToStream cut the last NULL char with delphi 2010

如果 blob 包含以 NULL 字符结尾的 rtf,delphi 2010 在我执行 SaveToStream 或 SaveToFile 时剪切此字符

是否有可能改变这种行为?

这对我来说是个问题,因为我计算了那些字段的哈希值。 Delphi 2010 我有这个问题,但 Delphi 2007 没有!因此哈希结果发生变化....

好的,我发现错误出现的时间:

  1. Delphi 2010
  2. Firebird 数据库管理系统
  3. TIBDatabase 对象具有字符集 属性(在 例如我的情况 lc_ctype=ISO8859_1)

如果我删除字符集,保存方法工作正常!

其他信息:
- 我使用 Firebird 数据库
- blob 字段是 blob 子类型 text
- value是一个rtf,他的结束符是null character

注意: 删除字符集时,blob 字段中的文本无法正确读取,我发现的唯一解决方法是直接在查询中将 blob 转换为 varchar