|
|
导航: |
论坛 -> DELPHI技术
斑竹:liumazi,sephil |
|
作者: |
|
2024/1/1 13:51:10 |
标题: |
|
加入我的收藏 |
楼主: |
我把2个中文名的mp3文件打包成zip的格式。但是之后用delphi自带的zip单元解压到目录后,文件名就都变成乱码的。这个有什么办法吗?
以下是解压文件的代码,用的是D10.4 zip := TZipFile.Create; DoDownload('http://xxx./voan/music.zip'); Zip.Open(Filename, TZipMode.zmRead); Zip.ExtractAll('C:\Users\Public\Thunder Network\APlayer\Music');
----------------------------------------------
- |
作者: |
|
2024/1/2 1:45:48 |
1楼: |
看你的代码,zip 文件是 download 来的,不是你自己打包的。
你有测试自己用 TZipFile 来打包,再用 TZipFile 来解包吗?
----------------------------------------------
-
|
作者: |
|
2024/1/2 4:10:28 |
2楼: |
应该不是你的问题。zip有原罪的,就是最早不支持Unicode,但是又没法改,否则早先的zip不支持了那还了得。 不信你用Delphi压缩并解压缩看看,保证没问题。或者用winrar正常模式压缩,用delphi解压缩,应该也没问题。
----------------------------------------------
只有偏执狂才能生存!
|
作者: |
|
2024/1/2 10:03:42 |
3楼: |
旧的ZIP格式只支持ANSIC格式的文件名,后来才增加了UTF8的标识,是否启用这个标识是在ZIP文件头里面。然而如果是旧ZIP格式压缩出来的文件,解压的时候是不知道编码的,有可能出现乱码。
----------------------------------------------
武稀松http://www.raysoftware.cn
|
作者: |
yookee (yookee) |
★☆☆☆☆ |
-
|
盒子活跃会员 |
|
2024/1/2 10:38:04 |
3楼: |
下载下来的zip文件情况比较多 是别人上传的zip还是网站在下载时自动打包的zip 上传人的打包环境,网站的打包环境都有影响
下面是我遇到的情形供参考: 服务器操作系统是麒麟的,代码页被设置成936(GB2312),此上原生的中文名文件压缩解压缩,包括下载到Windows系统(10和11)的解压都没问题。 有人以65001(UTF-8)上传中文名文件,其他人下载后就各种乱码了。
具体解决过程我记不清了(新冠后遗症),好像7zip里显示都是正常的,反正Windows平台上的代码里留了两种解压方式 UnTar := TAbUnZipper.Create(nil); UnTar.ExtractOptions := []; UnTar.filename := tarfile; UnTar.BaseDirectory :=untardir; UnTar.ExtractFiles(path_in_tar); UnTar.CloseArchive; UnTar.Free;
ShellExecute(0, nil, PChar('tar'), PChar('xvf ' + tarfile + ' --strip-components 8 *'), PChar(untardir), 0);
----------------------------------------------
-
|
作者: |
|
2024/1/2 14:04:58 |
4楼: |
谢谢楼上兄弟们的解答,网上的那个文件,是我自己主页上的。我后来弄好了。用7zip加了一个参数,让他自动按照utf8的格式来打包了。
----------------------------------------------
-
|
|