如何匹配 VBA 6/VBA 7 和 Java 8 之间的 ZLib 流?
How to match ZLib stream between VBA 6/VBA 7and Java 8?
我们能够做到以下几点。
在VBA6/VBA7:
- 参考 32 位 zlibwapi.dll (VBA 6) 或 64 位 zlibwapi.dll (VBA 7).
- 调用 compress() 或 compress2() 方法生成压缩文件
流
- 调用uncompress()和uncompress2()方法解压
压缩流
在 Java 8(JDK 1.8 在 Tomcat 8)
- 有一个简单的 java 程序可以使用新的压缩数据
Deflater() 实例
- 有一个使用 Inflater() 解压的简单 Java 程序
实例
当 VBA 发送压缩流供 Java Servlet 解压缩或当 Java Servlet 发送压缩响应数据供 VBA 解压缩时,我们失败了。
我们了解以下事实。
- ZLib 提供了 3 种格式(raw、zlib 和 gzip)。
- zlibwapi.dll中的方法即compress()和compress2()
生成 zlib 格式的压缩字节。这个有提到
在类似的线程中
Java decompressing array of bytes
- Java 端的 Inflater() 实例允许解压缩 zlib 格式
根据发布的代码示例的数据
Compression / Decompression of Strings using the deflater
- Java 8 已将 zlib 版本 1.2.5 集成为 java.utils.zip 的一部分
包裹。
- 我们已经确保我们使用的是 zlibwapi.dll 版本
1.2.5 在 VBA 方面也是如此。
我们尝试使用十六进制编辑器来比较VBA和Java独立生成的压缩数据的字节流。我们注意到生成的压缩数据有些不同。我们认为正是这种差异导致两种环境相互误解。
此外,我们认为当通信发生时,必须有一些共同的字符集来管理两个端点之间的 encoding/decoding 方案。我们甚至尝试比较由 VBA 生成并与 Java Servlet 通信的字节流的十六进制代码。
- 这些字节似乎正在插入一些额外的 0 字节
通信时实际的压缩字节集之间
发生。这发生在 VBA 端。可能是因为一些 unicode 解释。
- 传送到 Java 的任何字节都完全显示
他们的代表不同。
我们需要修复我们独立工作的代码,以便相互通信并和平地压缩和解压缩。我们认为有两件事需要解决——获取匹配的格式和使用按原样发送字节的字符集。我们正在寻求这方面专家的任何帮助,以帮助我们找到可能解决方案的正确路径。我们需要
的答案
- compress2()或compress()真的生成zlib格式吗?
- 哪个字符集允许我们按原样发送字节(如果有 10
字节,我们要发送 10 个字节。不是 20)。如果是 unicode,则为 0 字节
在两者之间插入(因此 10 个字节变成 20 个字节)。
- 是的。
- 不要发送字符。发送字节。
我们能够做到以下几点。
在VBA6/VBA7:
- 参考 32 位 zlibwapi.dll (VBA 6) 或 64 位 zlibwapi.dll (VBA 7).
- 调用 compress() 或 compress2() 方法生成压缩文件
流 - 调用uncompress()和uncompress2()方法解压 压缩流
在 Java 8(JDK 1.8 在 Tomcat 8)
- 有一个简单的 java 程序可以使用新的压缩数据 Deflater() 实例
- 有一个使用 Inflater() 解压的简单 Java 程序 实例
当 VBA 发送压缩流供 Java Servlet 解压缩或当 Java Servlet 发送压缩响应数据供 VBA 解压缩时,我们失败了。
我们了解以下事实。
- ZLib 提供了 3 种格式(raw、zlib 和 gzip)。
- zlibwapi.dll中的方法即compress()和compress2() 生成 zlib 格式的压缩字节。这个有提到 在类似的线程中 Java decompressing array of bytes
- Java 端的 Inflater() 实例允许解压缩 zlib 格式 根据发布的代码示例的数据 Compression / Decompression of Strings using the deflater
- Java 8 已将 zlib 版本 1.2.5 集成为 java.utils.zip 的一部分 包裹。
- 我们已经确保我们使用的是 zlibwapi.dll 版本 1.2.5 在 VBA 方面也是如此。
我们尝试使用十六进制编辑器来比较VBA和Java独立生成的压缩数据的字节流。我们注意到生成的压缩数据有些不同。我们认为正是这种差异导致两种环境相互误解。
此外,我们认为当通信发生时,必须有一些共同的字符集来管理两个端点之间的 encoding/decoding 方案。我们甚至尝试比较由 VBA 生成并与 Java Servlet 通信的字节流的十六进制代码。
- 这些字节似乎正在插入一些额外的 0 字节 通信时实际的压缩字节集之间 发生。这发生在 VBA 端。可能是因为一些 unicode 解释。
- 传送到 Java 的任何字节都完全显示 他们的代表不同。
我们需要修复我们独立工作的代码,以便相互通信并和平地压缩和解压缩。我们认为有两件事需要解决——获取匹配的格式和使用按原样发送字节的字符集。我们正在寻求这方面专家的任何帮助,以帮助我们找到可能解决方案的正确路径。我们需要
的答案- compress2()或compress()真的生成zlib格式吗?
- 哪个字符集允许我们按原样发送字节(如果有 10 字节,我们要发送 10 个字节。不是 20)。如果是 unicode,则为 0 字节 在两者之间插入(因此 10 个字节变成 20 个字节)。
- 是的。
- 不要发送字符。发送字节。