ExcelでUTF-8(BOM無し)のCSVファイルを開くと文字化けしてしまう。
テキストエディタでUTF-8(BOM付き)に変換すれば化けずに開けるのだが、面倒なので自動変換するPowerShellスクリプトを作成した。
挙動
スクリプトへのショートカット(後述)にCSVファイルをドロップすると、一時ディレクトリにUTF-8(BOM付き)版のコピーが作成され、関連付けされたアプリで開かれる。*1
コード
$srcFilePath = $args[0] $srcFileName = Split-Path $srcFilePath -Leaf # テンポラリディレクトリ作成 $tempDirName = "TempDir_$(Get-Date -Format 'yyyyMMddHHmmss')" $tempDirPath = Join-Path -Path $env:TEMP -ChildPath $tempDirName $tempFilePath = Join-Path -Path $tempDirPath -ChildPath $srcFileName New-Item -ItemType Directory -Path $tempDirPath # 読み込み $content = Get-Content -Path $srcFilePath # BOM付きUTF8で保存 Set-Content -Path $tempFilePath -Value $content -Encoding UTF8BOM # オープン Start-Process $tempFilePath
上記のスクリプトを適当な場所に保存し、次のようなパスでショートカットを作成する。*2
pwsh.exe -ExecutionPolicy RemoteSigned -File "ここにps1ファイルのパスを入れる"
作成したショートカットにCSVファイルをドロップすると、UTF-8(BOM付き)に変換されたファイルが自動で生成され、開かれる。
*2:WindowsプリインストールのPowerShellでは無く、ストア等から導入する新しいバージョンのPowerShellで動かす必要が有る。