0

在我的旧版 VB6 应用程序中,我从 web 服务接收一个 zip 文件作为字节数组。使用 StrConv 函数将此字节数组转换为字符串并存储在文件系统中。

Dim arr() As Byte
Dim sUnicode as String

nFile = FreeFile
arr = objHTTP.responseBody

sUnicode = StrConv(arr, vbUnicode)

Open sFile For Output As #nFile
Print #nFile, sUnicode
Close #nFile

到目前为止一切顺利,这已经正常工作了十多年。现在该应用程序也在日本使用,上面的代码导致 zip 文件损坏。

我已经发现该问题与目标系统上的日语系统区域设置有关。

我尝试将语言环境 id 1033 传递给 StrConv 函数

StrConv(arr, vbUnicode, 1033)

接下来,我尝试按照此链接的说明实施解决方案

VB 6.0 中文本文件的编码

我还尝试使用“SetLocaleInfo”api 调用更改系统区域设置。

在系统区域设置为日语的操作系统上,这些尝试均未生成有效的 zip 文件。

有人知道如何获得有效的解决方案吗?

提前致谢,

乔斯

4

1 回答 1

1

您应该完全避免字符串转换。尝试这样的事情:

Dim arr() As Byte

nFile = FreeFile
arr = objHTTP.responseBody

Open sFile For Binary As #nFile
Put #nFile, , arr
Close #nFile

这会将数组的内容直接写入文件。

于 2014-06-02T15:17:29.670 回答