項目NAMEは漢字の項目で、H社ホストでは漢字コードにSJISを使っている事も分かっている。項目NAMEをバイト列から文字列に直して表示してみればいい。
今回はPowerShellバージョンは関係なく使えそうな手段を示す。
ファイル内容をバイト配列として保存し、配列の範囲を System.Text.Encodingオブジェクトに与えて文字列に戻してあげる。
項目NAMEは
となる。
PS E:\WK> $bindata = Get-Content -Path SAMPLEBIN -Raw -Encoding Byte ← ファイルをバイト型配列としてメモリに確保する。 PS E:\WK> $enc = [System.Text.Encoding]::GetEncoding(932) ← CP932 ※MS932, Windows-31j PS E:\WK> $enc.GetString($bindata[4..11]) ← 1レコード目の項目NAME 柴犬 PS E:\WK> $enc.GetString($bindata[18..25]) ← 2レコード目の項目NAME 柴犬 PS E:\WK> $enc.GetString($bindata[32..39]) ← 3レコード目の項目NAME 土佐犬 PS E:\WK>
1レコード目は「柴犬 」、2レコード目も「柴犬 」、3レコード目は「土佐犬 」となった。