(QA) RDi iプロジェクトでPCにD/LしたソースをVSCodeで開くと文字化けします

主題のご質問をいただきました。

こんな感じの環境です。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1011394/37cecd93-0e73-d90a-c3aa-c7f7a32390e2.png)

概要は、
・元のソースはIBM i 上のソース物理ファイル(SRCPF)
・ソース物理ファイルをRDiのiプロジェクトにインポートすると、Windowsローカルにソース物理ファイルがテキストファイルとしてインポートされます。
・RDiでインポートされたテキストファイル※1をVSCodeで開くと日本語が文字化けする、というものです。

※1 今回の例ではILE-RPGのソース、DDSソース（Db2 for i のテーブル定義=SQL DDLと同様なもの）
※1 補足すると、IBM i 上のソース物理ファイルの中には複数のプログラム、複数のデータベーステーブルのソースが含まれています(それぞれのソースをメンバーと呼びます)。（IBM i のファイル＝オブジェクト管理としては複数ソースをまとめて１ソース物理ファイルとして管理されているが、）iプロジェクトにインポートすると、1メンバーのソースごとに１つのテキストファイルとしてインポートされます。
## VSCodeで開いた時の文字化け

上図のWindowsにインポートされたテキストファイルのソースをVSCodeで開くと以下のようになりました。
例1) QRPGLESRC.K201R (ILE-RPGソース）
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1011394/9e1ddf95-c665-49f7-9bbd-1b201438d285.png)

例2) QDDSSRC.ITEMM
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1011394/e756e03b-7f55-646e-1088-9a3cd27e3389.png)

## 文字化けの原因

VSCodeで開いた際、エンコードがUTF-8になるのですが、RDi iプロジェクトでインポートされた際のテキストファイルはS-JISでエンコードされていました。大元のIBM i 上のソース物理ファイルのCCSID(文字属性)がEBCDIC(CCSID(5035))だったためと思われます。

（テストしていませんが、元のソース物理ファイルの属性がCCSID(1208) UTF-8ならRDi iプロジェクトでインポート時もUTF-8エンコードでインポートされるのではないでしょうか。）

## 文字化けの回避方法①　都度設定設定変更

ということで、VSCodeの画面右下部のこちら
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1011394/1d71c016-72dc-f709-dd7e-f07037d26a0e.png)

を見ると、UTF-8エンコードと分かりますので、UTF-8のところをクリックすると、下記のパネルが表示されるので、エンコード付きで再度開く　を選択して、、

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1011394/932d7cf4-96da-ab86-018f-5fecc8b0e22e.png)

Japanese(Shift-jis) を選択します。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1011394/06f3ab73-9235-2958-604a-5d521c8fb691.png)

すると、以下のように文字化けが解消されました。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1011394/069c79c8-5712-a207-e9b0-d22633545a2d.png)

画面、最下部のエンコードで確認できます。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1011394/10a0f7ff-327b-4421-99ed-cba5bc7f3b24.png)

DDSSRC(Db2 for i テーブル定義）もOKでした。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1011394/03e37277-2ac9-d6ef-829d-53b7dd0a1aa0.png)

ん？これ（原価の間の□）は？
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1011394/6e7bc9f4-c09c-17a5-3e1d-2e8116bd7b8b.png)

RDi LPEXエディターで開くと
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1011394/a2ec7b44-a502-82c0-82f1-015da11fdeae.png)

ふむ。
では、5250 SEUで見ると、
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1011394/ca8a2d4f-fce0-1633-9c03-bbae2424a443.png)

全角ブランクが２つ入っているものでした。

RDi LPEXエディターでも全角ブランク2つ、VSCodeでも全角ブランク2つを表示していましたので文字化けでは無いようです。

## 回避方法その２　files.autoGuessEncoding　を設定する

guriguriさん提供ｗ
VSCode に自動判別させる (files.autoGuessEncoding) のでは駄目でしょうか？

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1011394/bb37bffa-4942-67b8-eb9e-6f1b6573d6ef.png)

できました！

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1011394/9d03b9ed-3565-1269-474b-07294d0c7a6c.png)

## 回避方法その3 RDi iプロジェクトでインポートする際の属性を変更してみる。

こちらもGURIGURIさんにサジェッション頂いた件です。

**RDi の eclipse.ini で「 -Dfile.encoding=UTF-8 」を指定する、というのでは駄目でしょうか？**

長くなったので[別記事](https://qiita.com/gomAnomalocaris/items/c2965961c6fe84e926c2)にしました。

結果だけ書くとVSCodeで開いた際UTF-8エンコードで文字化けなく開く事ができました。（ただし、現時点でRDi LPEXエディターで開いた際不具合あり・・）