Tclsh将base64转换为zip文件

时间:2015-08-21 14:03:45

标签: zip base64 tcl 7zip

我编写了一个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文件。

我做错了吗?

1 个答案:

答案 0 :(得分:2)

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

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