有关SJIS编码ZIP文件的处理对策

环境

Win10 1903。$PSCultureja-JP$PSUICultureen-US

另外,我调了一下system locale的东西,把“ワールドワイド言語サポートで Unicode UTF-8を使用”这项选了,([System.Text.Encoding]::Default).BodyNameutf-8

需求

这边经常能下到Shift-JIS编码的zip文件,文件名全都是美到令人窒息的乱码。咱就别用SJIS来编码了,先解出来可好?

对策

太长不看版

用Bandizip的图形界面搞定就好。用它打开zip文件,直接就能选编码。

7-Zip虽然用图形界面(应该?)做不到,但命令行没问题。比如:&"C:\Program Files\7-Zip\7z.exe" x (Get-ChildItem .)[11].Name -oE:\ -mcp=932就可以把当前目录的第11个文件用Shift-JIS(代码页为932)解压到E盘那边了。

使用System.IO.Compression的ZipFile

本段撰写日期为2020/07/13。

文档:

过了这么久,终于决定填一下这个坑。时间过了好久,现在已经鸟枪换炮了,在用pwsh 7.0.2,虽然在这个例子中看不出来w

Get-Location
# -> Path
# -> ----
# -> D:\
Get-ChildItem フォルダー
# ->     Directory: D:\フォルダー
# -> 
# -> Mode                 LastWriteTime         Length Name
# -> ----                 -------------         ------ ----
# -> -a---          2020/07/13    21:58        2097152 テスト.dat
Add-Type -AssemblyName 'System.IO.Compression.FileSystem'
# 压缩:
[System.IO.Compression.ZipFile]::CreateFromDirectory('D:\フォルダー', 'D:\テスト.zip', [System.IO.Compression.CompressionLevel]::NoCompression, [System.Text.Encoding]::GetEncoding('shift_jis'))
# 解压缩:
[System.IO.Compression.ZipFile]::ExtractToDirectory('D:\テスト.zip', 'D:\フォルダー2', [System.Text.Encoding]::GetEncoding('shift_jis'), $false)

这个至少支持字符编码,而且不算难用,建议试试。

InSb

InSb

只是跟工作和生活相关的记录