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

在VB6中转换系统区域设置为日语的字节数组,vb6,locale,strconv,Vb6,Locale,Strconv,在遗留的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 Clos

在遗留的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)
接下来,我尝试实现这个链接描述的解决方案

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

在系统语言环境设置为日语的操作系统上,所有尝试均未找到有效的zip文件

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

提前感谢,


Jos

您应该完全避免字符串转换。试着这样做:

Dim arr() As Byte

nFile = FreeFile
arr = objHTTP.responseBody

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

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

+1某些字节序列在日语编码中不是有效字符串。必须完全避免使用字符串。