在VB6中将系统区域设置转换为日语的字节数组转换

时间:2014-06-02 11:46:44

标签: vb6 locale strconv

在我的遗留VB6应用程序中,我收到一个zip文件作为来自webservice的字节数组。此字节数组使用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)

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

Encoding of Text Files in VB 6.0

我也尝试使用'SetLocaleInfo'api-call更改系统区域设置。

在系统区域设置为日语的操作系统上,没有尝试导致有效的zip文件。

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

提前致谢,

1 个答案:

答案 0 :(得分:1)

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

Dim arr() As Byte

nFile = FreeFile
arr = objHTTP.responseBody

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

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