はじめに
Workatoでは、文字コード(エンコーディング)を自動的に判別して適切な結果で出力される、あるいはformulaモードに切り替えてas_string
メソッドを利用し適切な文字コードを選択することにより適切な結果で出力されます。
しかし、何らかの理由で文字コードが壊れているファイルの場合、文字化けしてしまう場合があります。また、formulaモードに切り替えてas_string
メソッドで正しい文字コードを指定しても文字化けしてしまう場合があります。
このような場合は、次に示す手順のようにPythonコネクタを利用して文字コードを指定し、デコードすることで、文字化けせずに結果を出力することが可能です。
手順
Boxからテキストファイルをダウンロードし、指定された文字コードでデコードするレシピを例として説明を進めていきます。
Step3にPythonコネクタを追加し、次のように設定を進めます。
Input fields
value
と encoding
の2つの文字列型のフィールドをセットします。
value
にはBoxのFile contents
をセットします。なお、File contents
はInputStream型でありそのまま扱うことが出来ないため、文字列型へキャストを行います(.to_s
メソッドを追加します)。また、現状をそのままコードに渡せるようBase64エンコードを行います(.encode_base64
メソッドを追加します)。
Output fields
value
という文字列型のフィールドをセットします。
Code
次のコードを入力します。
import base64
def main(input):
value = base64.b64decode(input['value']).decode(input['encoding'], 'strict')
return {
'value': value
}
結果の確認
このレシピを実行すると、3ステップ目でデコード後の結果を確認することができます。