Character encoding 在VB6中由Polar Zi5.0创建的ZIP文件中显示错误的德语Umlaute

Character encoding 在VB6中由Polar Zi5.0创建的ZIP文件中显示错误的德语Umlaute,character-encoding,vb6,zip,Character Encoding,Vb6,Zip,我在VB6中有一段相当老的代码,它使用Polar的Zip5.0 DLL创建ZIPs。 它将以前创建的PDF从Crystal添加到ZIP文件 问题是,在一个客户系统上,德国的Umlaute变得一团糟,被不同的(unicode?)字符所取代。例如,我的文件名中有一个德语ä(U+00E4),但在客户机上它显示为õ(U+00F5) 我想知道这可能是什么原因,因为它没有发生在我们当地的测试系统。这可能是一些与字符集相关的情况 任何提示都将不胜感激。事实证明,它具有unicode文件名支持的扩展 我对7-z

我在VB6中有一段相当老的代码,它使用Polar的Zip5.0 DLL创建ZIPs。 它将以前创建的PDF从Crystal添加到ZIP文件

问题是,在一个客户系统上,德国的Umlaute变得一团糟,被不同的(unicode?)字符所取代。例如,我的文件名中有一个德语ä(U+00E4),但在客户机上它显示为õ(U+00F5)

我想知道这可能是什么原因,因为它没有发生在我们当地的测试系统。这可能是一些与字符集相关的情况

任何提示都将不胜感激。

事实证明,它具有unicode文件名支持的扩展

我对7-zip做了一些研究,当设置了
-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上使用正确的文件名提取它


您可以检查Zip组件是否支持此扩展名—一个标志或参数设置。

Zip文件格式不使用unicode作为文件名。编码和解码PC上的默认系统区域设置(对于非unicode应用程序)可能不同。请尝试在编码时将unicode文件名转换为,在解码时将unicode文件名转换为,反之亦然(可以使用
wideChartMultiByte
和第一个参数1252)。Ja,您的客户想要打开zip fil-e的程序可能有特殊字符的问题。我从使用Winzip时就知道了。@记者:是的,但是许多不同的客户/人会打开zip文件,我不准备“知道”他们将使用什么字符集。你是怎么处理的?@wqw:我想情况就是这样。系统上的区域设置、字符集等(将)不同。我不确定我是否理解如何使用这个函数。例如,我的文件名中有一个德语ä(U+00E4),但在客户端计算机中它显示为õ(U+00F5)。我该怎么处理呢?我们用字母表上的前26个字母来处理。有时它确实很痛,但有时更轻(产生的压力更小)。