DotNetZip v1.9のReadメソッドにエンコードを渡す方法です。
ポイントは Ionic.Zip.ReadOptionsで、これのEncodingプロパティに932を指定し、Readメソッドの第二引数に指定します。
サンプルコード(powershell)
4 | $zipFilePath = ".\test.zip" |
6 | [void][System.Reflection.Assembly]::LoadFrom( ".\Ionic.Zip.dll" ) |
8 | $readOptions = New-Object Ionic.Zip.ReadOptions |
9 | $readOptions .Encoding = [System.Text.Encoding]::GetEncoding(932) |
10 | $zipfile = [Ionic.Zip.ZipFile]::Read( $zipFilePath , $readOptions ) |
11 | foreach ( $file in $zipfile ){ |
ネット上によくあるサンプルコードでは、Readメソッドの第二引数に[System.Text.Encoding]を直接渡すものがありますが、これはv1.9では「”Read” のオーバーロードで、引数の数が “2” であるものが見つかりません。」というエラーになってしまいます。
NGなコード例(powershell)
4 | $zipFilePath = ".\test.zip" |
6 | [void][System.Reflection.Assembly]::LoadFrom( ".\Ionic.Zip.dll" ) |
8 | $encoding = [System.Text.Encoding]::GetEncoding(932) |
9 | $zipfile = [Ionic.Zip.ZipFile]::Read( $zipFilePath , $encoding ) |
10 | foreach ( $file in $zipfile ){ |
結構ハマッた。