フローで文字コード Windows-31Jから他の文字コードに変換すると文字化けします

フローサービスを使用してWindows環境で作成したShift_JISのテキストとその他の日本語文字コード(Shift_JIS、EUC-JP、 ISO-2022-JP等)のテキストとの相互変換を行うときに、下記の文字が文字化けする場合があります。

文字化けする文字とShift_JIS文字コード

波線         ~  (8160)
二重縦線      ∥ (8161)
マイナス記号  -  (817c)
セント記号    ¢  (8191)
ポンド記号    £  (8192)
ノット記号    ¬  (81ca)
全角ダッシュ ―  (815c)

これは、Windows環境のフローで作成したShift_JISのテキストは実際はWindows-31Jであり、その他の日本語文字コードとUnicodeを介して相互変換するときに変換される文字コードポイントの相違により発生する現象です。

※以降、Windows環境で使用されるShift_JISコードは、Windows-31Jと記述します。

文字化けの発生パターン

フローで選択できるエンコーディングはWindows-31J、Shift_JIS、EUC-JP、ISO-2022-JPと4種類あり(utf-8とutf-16は除く)、Shift_JIS、EUC-JP、ISO-2022-JPの3種類の中で相互に変換を行う場合は文字化けは発生しませんが、Windows-31Jとの相互変換を行う場合は文字化けが発生します。

例1

上記7文字が含まれている場合には文字化けが発生します。

Windows-31J
↓
一旦、Unicode変換表に基づきUnicodeへ変換
↓
Shift_JIS
EUC-JP
ISO2022-JP

例2

上記7文字が含まれている場合にも文字化けは発生しません。

Shift_JIS
EUC-JP
ISO2022-JP
↓
一旦、Unicode変換表に基づきUnicodeへ変換
↓
Shift_JIS
EUC-JP
ISO2022-JP

文字化けしないようにする方法

これら文字化けの解消方法として、StringReplace関数で明示的にコードポイントの相違が発生する文字のコードポイントを指定して変換する方法があります。それぞれ、Windows-31JからJIS系文字コードへの変換の場合と、JIS系文字コードからWindows-31Jへの変換の場合の変換テーブルを記述する形になります。変換テーブルなどの詳細な方法については、StringReplace関数のヘルプを参照してください。

この記事は役に立ちましたか?
7人中1人がこの記事が役に立ったと言っています

他のキーワードで検索する