Pandasで処理した結果をcsvにしてダウンロードしてエクセルで見るということは結構よくあるが、 そのまま開くと文字化けする。原因はエクセルがBOM無しUTF8を正しく処理してくれないため。 BOMを付ければ文字化けしなくなるが、毎回エディタを開いてBOMを付けるのめんどい。。
ということで実行すると「scpでダウンロード>BOMを付ける」までやってくれるバッチファイルを作りました。地味に便利だなぁ。。
@echo off
scp -r server:~/output/*.csv ./output
:UTF-8 -> BOM UTF-8
setlocal enabledelayedexpansion
if not exist "%TMP%\bom.utf8" powershell -nop -c "&{[IO.File]::WriteAllText('%TMP%\bom.utf8', '', [TEXT.Encoding]::UTF8)}"
for /F "usebackq delims=`" %%f in (`dir /b C:\work\my_pj\output ^| findstr /l /e /i .csv`) do (
if !ERRORLEVEL! equ 0 (
echo C:\work\my_pj\output\%%f
copy /b "%TMP%\bom.utf8" + "C:\work\my_pj\output\%%f" "C:\work\my_pj\output\%%f.bom.csv" > nul
del "C:\work\my_pj\output\%%f"
)
)
以下を参考にして作りました。ありがとうございます。