【Blueprism】 CSVファイルの文字化け処理

# はじめに
blueprismには「Utility - File Management」VBO内に「Get CSV Text As Collection」オブジェクトがあります。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/660650/ceab9036-ed42-1e1c-1ea0-7d6af193cdc3.png)


これを使用すると下記のようにCSVファイルの中身をコレクションアイテムに格納する事ができます。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/660650/f9fd23f8-c7e6-6173-2ff8-01bdc25e65d3.png)


しかし、Webからダウンロードしたcsvファイルをコレクションに格納する場合、
そのcsvファイルがS-JIS以外の文字コードですと、（オブジェクトで文字コードの指定が出来ないため）文字化けしてしまうのです・・・
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/660650/ef53226c-90ae-e325-8e60-6960cc9a3705.png)


そこで今回は、blueprismDXからダウンロード出来る「Utility - File Management - JP」を使用して文字化けせずにコレクションへ格納する方法を解説します。

# 用意する環境
Blueprism 6.7

使用するビジネスオブジェクト
Utility - File Management - JP

使用するファイル
文字コードをUTF-8に設定したcsvファイル（あえて文字化けを起こすため）

# セットアップ
## １．BlueprismDXから「Utility - File Management - JP」をダウンロード
https://digitalexchange.blueprism.com/dx/entry/3439/solution/file-management---jp

## ２．Blueprismにインポートする
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/660650/96fe9588-4e8c-bb8f-66b3-bb31cfe87eea.png)

無事インポートされました
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/660650/1930c173-3cb9-b738-c03d-8aca5585255f.png)


# 使い方
## 新規プロセス作成
文字化け処理をするため、新規でプロセスを作成します。
今回は、プロセス名を「文字化け処理」にしました。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/660650/0bbd9772-c469-2041-f03d-c9e89ad901ba.png)


プロセスの中身はこんな感じ
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/660650/3ac4102e-fa8e-d57e-7fdd-c62ee5158902.png)


文字化け処理をする前と後が分かるよう最初のステージに「Utility - File Management - JP」オブジェクト内のアクション「CSVテキストをコレクションとして取得」をセットして一度コレクションに格納します
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/660650/be264436-39f5-b30c-1ff7-2c603a0d9fd7.png)
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/660650/4f169b11-f312-a3ad-b3fa-fe9b633f25aa.png)


実行するとこんな感じ
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/660650/92e4b38d-ac36-20f3-27bd-d7fe9361f649.png)
ばっちり文字化けしていますね・・・・・・

## １．文字化け処理の対象となるCSVファイルからテキストをすべて読み取る
ここでは「Utility - File Management - JP」オブジェクト内のアクション「ファイルからすべてのテキストを読み取る」を選んでください。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/660650/5a18a635-0719-db88-a785-dfdb137b6e09.png)
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/660650/e9dffd21-6d21-ad6b-806a-13329fc99bf3.png)



実行すると下記のように文字化けすることなくデータアイテムに格納されます
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/660650/3192a8d6-1b28-38f5-4e52-65a7ab126ec1.png)


下記は「ファイルからすべてのテキストを読み取る」アクションのコードステージの中身です。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/660650/9539ee99-4fe5-e2b8-7fc6-9d9c5774b676.png)


```StreamReader``` を ```File_Name``` 引数だけでインスタンス化していますが、[StreamReaderのドキュメント](https://docs.microsoft.com/ja-jp/dotnet/api/system.io.streamreader?view=netcore-3.1) を見ると、UTF-8 エンコードが既定値のようです。そのため文字化けせずに読み取れるのですね。
（これと同じアクションに「ファイルからすべてのテキストを読み取る - 文字コード指定」もあります）

## ２．1の処理で読み取ったテキストを文字コード指定でファイルに書き込む	
文字コードは「shift_jis」を指定
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/660650/a2a48cb4-3d43-20a5-cf6b-860606d76bf3.png)


## ３．２で作成したcsvファイルをコレクションアイテムに格納する	
ファイルパスは先ほど作成したテキストファイルを指定
 今回、ヘッダーはTrueに設定しておきます。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/660650/14236f11-db1c-9795-9acc-50465400659e.png)
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/660650/a82998f1-2bcb-4720-88f7-c62222017061.png)


## 実行後
文字化けすることなく、コレクションに格納出来ました！
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/660650/447a6f46-f201-c0a4-c183-824670d8ac66.png)