1
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

Qiita100万記事感謝祭!記事投稿キャンペーン開催のお知らせ

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

Last updated at Posted at 2025-01-16

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

こんな感じの環境です。
image.png

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

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

VSCodeで開いた時の文字化け

上図のWindowsにインポートされたテキストファイルのソースをVSCodeで開くと以下のようになりました。
例1) QRPGLESRC.K201R (ILE-RPGソース)
image.png

例2) QDDSSRC.ITEMM
image.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

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

image.png

Japanese(Shift-jis) を選択します。
image.png

すると、以下のように文字化けが解消されました。
image.png

画面、最下部のエンコードで確認できます。
image.png

DDSSRC(Db2 for i テーブル定義)もOKでした。
image.png

ん?これ(原価の間の□)は?
image.png

RDi LPEXエディターで開くと
image.png

ふむ。
では、5250 SEUで見ると、
image.png

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

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

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

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

image.png

できました!

image.png

1
0
5

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?