DSで4バイト文字を任意の文字に置き換える方法

フォローする

概要

DSで4バイト文字を任意の文字(文字列)へ置き換えるには「変数の変換(Convert Variables)」ステップなどを使用して、対象文字をエンコードし、「テキストの置き換え」を行うことで可能です。

 

作業手順

「Windows 日本語(windows-31j)」を使用してエンコードする場合

1. 下記の変数を作成する。

変数名 変数の型 初期値
テキスト Short Text型 @𠀋𡈽𣝣𦹀
バイナリ Binary型  

※"■" および "@" は4バイト文字ではありません。

2. 「変数の変換(Convert Variables)」ステップを追加する。

3. 「アクション」タブの「変換」項目 >「+」ボタンをクリックする。

4.「設定:変換」ダイアログの「開始」項目にShort Text型変数を設定する。

5.「終了」項目にBinary型変数を設定する。

6.「コンバータ」項目の「+」ボタンをクリック >「エンコードとデコード」 >「テキストをバイナリに変換」をクリックする。

7. 「設定:テキストをバイナリに変換」ダイアログの「エンコード」項目で「Windows 日本語( windows-31j)」を選択する。
※「テスト出力」項目に出力されている16進数は下記のエンコード結果です。
下記の結果から、4バイト文字は「3F」とエンコードされることが確認できます。

8. 「OK」ボタンをクリックする。

9. 「設定:変換」ダイアログの「OK」ボタンをクリックする。

10. 「アクション」タブの「変換」項目 >「+」ボタンをクリックする。

11. 「設定:変換」ダイアログの「開始」項目にBinary型変数を設定する。

12. 「終了」項目にBinary型変数を設定する。

13. 「コンバータ」項目の「+」ボタンをクリック >「テキストフォーマット」 >「テキストの置き換え」をクリックする。

14. 「設定:テキストの置き換え」ダイアログの「このテキストを検索」項目に「3F」を入力する。

15. 「このテキストに置き換え」項目に「81 A1」を入力する。
※「テスト入力値」、「テスト出力値」が空白の場合があります。

16. 「OK」ボタンをクリックする。

17. 「設定:変換」ダイアログの「OK」ボタンをクリックする。

18.「アクション」タブの「変換」項目 >「+」ボタンをクリックする。

19.「設定:変換」ダイアログの「開始」項目にBinary型変数を設定する。

20.「終了」項目にShort Text型変数を設定する。

21. 「コンバータ」項目の「+」ボタンをクリック >「エンコードとデコード」 >「バイナリをテキストに変換」をクリックする。

22. 「設定:バイナリをテキストに変換」ダイアログの「変数」項目にBinary型変数を設定する。

23. 「エンコード」項目に「Windows 日本語(windows-31j)」を設定する。

24. 「OK」ボタンをクリックする。

25. 「設定:変換」ダイアログの「OK」ボタンをクリックする。

 

「Unicode(UTF-8)」を使用してエンコードする場合

上記の手順7や手順23で「Unicode(UTF-8)」を指定する場合は、下記のように4バイト文字それぞれでエンコード後の16進数の値が変わってきます。

文字 16進数
 E2 96 A0
@  40
𠀋  F0 A0 80 8B
𡈽  F0 A1 88 BD
𣝣  F0 A3 9D A3
𦹀  F0 A6 B9 80

 「Unicode(UTF-8)」を使用する場合は、上記の手順13~15を以下のように変更してください。

13. 「コンバータ」項目の「+」ボタンをクリック >「テキストフォーマット」 >「パターンを置き換え」をクリックする。

14. 「設定:パターンを置き換え」ダイアログの「パターン」項目に正規表現で「F0\s..\s..\s..」と入力する。

15. 「エクスプレッションを置き換え」項目に「”E2 96 A0”」を入力する。

 

参考

DSにてパターンで文字を抽出する方法
DSでパターンに複数条件を指定する方法
変数操作などを行う際の「パターン」で使用する正規表現
DSで変数内の特定の文字を除去する方法
DSで抽出した数値の桁数を変更(0埋め)する方法を教えてください
DSで日付から曜日を取得する方法を教えてください。

 

区分 確認Ver
逆引き 10.4.0.4