我在 VB6 中有这个相当古老的代码,它使用 Polar 的 ZIPLight 5.0 DLL 来创建 ZIP。它将先前创建的 PDF 从 Crystal 添加到 ZIP 文件。
问题在于,在一个客户系统上,德国元音变音符号变得混乱并被不同的(unicode?)字符取代。例如,我的文件名中有一个德语 ä (U+00E4),但在客户端计算机上它显示为 õ (U+00F5)。
我想知道这可能是什么原因,因为它不会发生在我们的本地测试系统上。可能是一些字符集相关的情况。
任何提示将不胜感激。
我在 VB6 中有这个相当古老的代码,它使用 Polar 的 ZIPLight 5.0 DLL 来创建 ZIP。它将先前创建的 PDF 从 Crystal 添加到 ZIP 文件。
问题在于,在一个客户系统上,德国元音变音符号变得混乱并被不同的(unicode?)字符取代。例如,我的文件名中有一个德语 ä (U+00E4),但在客户端计算机上它显示为 õ (U+00F5)。
我想知道这可能是什么原因,因为它不会发生在我们的本地测试系统上。可能是一些字符集相关的情况。
任何提示将不胜感激。
事实证明zip 格式具有 unicode 文件名支持的扩展名。
我对VszLib-mcu
进行了一些研究,并且在设置参数时 7-zip 确实支持 unicode zip 文件。
这是我的带有西里尔文文件名的测试样本:
Private Sub Command1_Click()
With New cVszArchive
.AddFile App.Path & "\това е проба.js"
.CompressArchive App.Path & "\aaa_ascii.zip"
End With
With New cVszArchive
.Parameter("cu") = "on"
.AddFile App.Path & "\това е проба.js"
.CompressArchive App.Path & "\aaa_unicode.zip"
End With
End Sub
Private Sub Command2_Click()
With New cVszArchive
.OpenArchive App.Path & "\aaa_ascii.zip"
.Extract App.Path & "\ascii"
.OpenArchive App.Path & "\aaa_unicode.zip"
.Extract App.Path & "\unicode"
End With
End Sub
Unicode 存档在非西里尔系统语言环境(非 Unicode 应用程序的语言环境)上正确提取。aaa_unicode.zip
XP 的内置 zip 查看器存在一些问题(较新的操作系统还可以),但 VszLib 也可以在 XP 上使用正确的文件名提取它。
您可以检查 ZIPLight 组件是否支持此扩展——标志或参数设置。