TL;DR
- WorkatoでShift_JISでエンコードしたい場合
-
Error calculating input for field 'message': U+2757 from UTF-8 to Shift_JIS
みたいなエラーメッセージが出る
.encode("Shift_JIS", { :invalid => :replace, :undef => :replace, :replace => "?" })
というformulaを使いましょう。
Shift_JISでエンコードする
Workatoのレシピで作成したCSVファイルを開いたとき、それが文字化けしている場合がある。(Excelで開いたときの文字化け)
これはWorkatoではUTF-8という文字コードでテキストを扱っているからである。ExcelではCSVなどのテキストファイルを開くとき、Shift_JISでデコードするため、UTF-8でエンコードされているファイルは文字化けしてしまうのである。
そのため、
- できたCSVをUTF-8の文字としてデコードする
- WorkatoでCSVを生成するときにShift_JISでエンコードするように設定する
の2通りがある。今回はformulaを使ってCSVを生成するときにShift_JISでエンコードする方法を記述する。
encode() formula
.encode()
というformulaを使うことでテキストを好きな文字コードでエンコードすることができます。
ただし、UTF-8で表現できる文字でもエンコード後の文字コードに存在しない文字に遭遇した場合はエラーになってしまいます...
そこで、.encode()
にオプションを記述します。
最終的には、Shift_JISにエンコードしたい場合はこのようなformulaを使用します。
.encode("Shift_JIS", { :invalid => :replace, :undef => :replace, :replace => "?" })
Shift_JISにエンコードできなかった文字は?
に自動的に置き換えられます。
これでエラーで止まってしまうことはなくなります。