💾
Power Automate で CSV を保存したときにコンテンツが文字化けする
はじめに
Power Automate で CSV を作成して OneDrive for Business などに保存するフローを作成します。日本語が含まれる CSV を Excel で開くと文字化けすることがあります。
問題点
たとえば、次のような JSON を CSV に変換して OneDrive for Business に保存するフローを作成します。
[
{ "Id": 1, "Title": "日本書紀" },
{ "Id": 2, "Title": "万葉集" },
{ "Id": 3, "Title": "古事記" }
]
フローは次のようになります。
このフローを実行して Excel で開くと、文字化けしていることがわかります。
原因
Power Automate では文字列はすべて UTF-8 で処理されます。そのため、OneDrive for Business に保存した場合も文字コードは UTF-8 になります。しかし、Excel は UTF-8 であることを認識できず、Shift-JIS でファイルを開いてしまいます。UTF-8 であることを認識させるには、BOM 付きの UTF-8 として保存する必要があります。
解決方法
ファイルを保存するときに BOM を追加します。BOM は 0xEF 0xBB 0xBF の 3 バイトデータです。これを追加するようにフローを修正します。バイト データの書き出しには decodeUriComponent('%EF%BB%BF')
を使うのがポイントです。
これで文字化けせずに出力できます。
おわりに
文字コードはなかなか意識しないところですが、トラブルの原因になることが多いので、正しく理解しておきたいです。
Discussion