💾

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