PowerShellでCSV(UTF8-BOMなし)の出力

PowerShell5.1とかでCSVファイルを取り込んで、なんらかの処理をして、CSVを出力する機会があったのでメモ
PowerShell7.1?以降は、BOMなしの出力が楽になった

目次

PowerShellのバージョン確認

$PSVersionTable | findstr PSVersion
PSVersion     7.4.0

Powershell5.1の入出力

CSVデータの取り込み(Import-Csv)

# UTF-8のインポート
$csv_obj = Import-Csv -Path $utf8_csv_file_path -Encoding

# Shift-JISのインポート
$csv_obj = Import-Csv -Path $s-jis_csv_file_path -Encoding "Default"

CSVデータの出力(Export-Csv)

# BOM付きUTF-8
$csv_obj | Export-Csv -Path output.csv -Encoding utf8 -NoTypeInformation

# BOMなしUTF-8
$utf8obj = New-Object System.Text.UTF8Encoding $False
$csv_data= $csv_obj | ConvertTo-Csv -NoTypeInformation
[System.IO.File]::WriteAllLines('./output.csv', $csv_data, $utf8obj)

Powershell7.1以降の入出力

CSVデータの取り込み(Import-Csv)

# UTF-8のインポート
$csv_obj = Import-Csv -Path $utf8_csv_file_path -Encoding "UTF-8"

# Shift-JISのインポート
$csv_obj = Import-Csv -Path $s-jis_csv_file_path -Encoding "Shift-JIS"

CSVデータの出力(Export-Csv)

# BOM付きUTF-8
$csv_obj | Export-Csv -Path output.csv -Encoding utf8BOM -NoTypeInformation

# BOMなしUTF-8
$csv_obj | Export-Csv -Path output.csv -Encoding utf8 -NoTypeInformation
$csv_obj | Export-Csv -Path output.csv -Encoding utf8NoBOM -NoTypeInformation

# Shift-JIS
$csv_obj | Export-Csv -Path output.csv -Encoding Shift-JIS -NoTypeInformation
目次