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

これまでのところ、これは 10 年以上にわたって正しく機能しています。現在、このアプリケーションは日本でも使用されており、上記のコードによって zip ファイルが破損します。

この問題がターゲット システムの日本語システム ロケールに関連していることは既にわかっています。

ロケール ID 1033 を StrConv 関数に渡してみました

StrConv(arr, vbUnicode, 1033)

次に、このリンクで説明されているソリューションを実装してみました

VB 6.0 でのテキスト ファイルのエンコード

また、「SetLocaleInfo」API 呼び出しを使用してシステム ロケールを変更しようとしました。

システム ロケールが日本語に設定されている OS で有効な 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 に答える