💾
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