Tclsh 将 base64 转储转换为 zip 文件

Tclsh convert base64 dump into zip file

我写了一个 Tclsh 代码,它将通过 xml-rpc 方法获取 base64 格式的 zip 文件内容。我使用以下代码片段将该 base64 数据转储到一个文件中:

#!/usr/bin/tclsh
...
set mybase64Dump [myXmlRpcCallToReturnThisDump]
set zipFilePtr [open "xyz.zip" "w"]
puts $zipFilePtr $mybase64Dump
close $zipFilePte

生成的 Zip 文件大小为 XKbytes,但当尝试使用 7zip 打开时,它显示 Is not Archive。但是我在在线转换器中复制粘贴了相同的 base64 转储。它给了我一个合适的可解压 zip 文件。

是我做错了什么吗?

您可能需要将输出文件配置为二进制文件,而不是 ascii。新打开的文件的默认翻译是 "auto",它对行尾字符进行系统特定的翻译,这不是您想要的 .zip 文件。打开句柄后使用 fconfigure 对其进行配置,或者通过将 BINARY 访问标志添加到打开命令来进行配置。

有关语法的详细信息,请参阅 http://www.tcl.tk/man/tcl8.5/TclCmd/open.htm and http://www.tcl.tk/man/tcl8.5/TclCmd/fconfigure.htm