我正在尝试从base64解码电子邮件文件中的附件并将其保存到磁盘。
出于测试目的,这是我的代码。其中input.txt仅包含base64编码的数据,它是一个HTML文件。
$file = "C:\input.txt"
$data = Get-Content $file
[System.Text.Encoding]::ASCII.GetString([System.Convert]::FromBase64String($data)) > out.html
解码工作正常,它会生成一个包含所有行的新文件,并且在外观上与原始附件相同。问题在于输出文件的大小是该文件的两倍(实际上是(文件大小* 2)+6字节,在这种情况下)。
我解码不正确吗?我也尝试过UTF8而不是ASCII ...相同的结果。
最佳答案
好吧,我知道了。谁知道默认情况下Out-File会重新编码为Unicode?通过执行以下操作解决:
$file = "C:\input.txt"
$data = Get-Content $file
[System.Text.Encoding]::ASCII.GetString([System.Convert]::FromBase64String($data)) | Out-File -Encoding "ASCII" out.html
关于base64 - 使用Powershell解码base64,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18726418/