LoginSignup
1
0

More than 3 years have passed since last update.

OutSystemsでShift-JISやEUC-JPのデータを扱う

Posted at

OutSystemsで作成するアプリケーションを既存のシステムと接続する場合、相手のシステムから渡されるデータがShift-JISやEUC-JPなどの文字コードセットでエンコードされていることがあります。

そういったデータを、OutSystemsのText型に変換する方法です。

サンプル

Forgeコンポーネント:https://www.outsystems.com/forge/component-overview/7064/housesoftsampletraditional
ConvertCharacterEncoding Screenを参照してください。

Shift-JISやEUC-JPでエンコードされたテキストファイルをアップロードして、指定エンコードとして解釈した結果を画面内に表示する画面になっています。

環境

Personal Environment(Version 11.0.606.0)
Service Studio(Version 11.6.22)
BinaryData

参照

組み込みのBinaryData APIから、BinaryDataToText Actionを追加しておきます。
qCharacterEncoding1.PNG

使い方

BinaryDataToText ActionのInputパラメータは以下の通り

  • BinaryData:変換対象のデータ。BinaryData型です。
  • Encoding:文字コードセットを表す文字列。Descriptionによると、有効なのは、"unicode", "utf-8", "utf-16", "ascii"ですが、他の文字列も使えます。後述

外部システムから来たデータを一旦BinaryData型で受け取り、Encodingには、そのデータの文字コードセットを表す文字列をセットします。

Outputパラメータは、OutSystemsのText型なので、あとは普通に処理ができます。

試してみた限りでは、Encodingに"shift_jis", "shift-jis", "euc-jp"などを指定しても問題なく変換できました。

内部処理を検討してみる

ここからは、使うにあたっては知らなくてもいいことです。
内部処理が気になる人向け。

BinaryData APIはExtensionです。
そのため、IntegrationStudioで開き、更にオリジナルの実装コード(C#)をVisual Studioで開くことができます。

Inputパラメータで渡した、Encoding文字列は以下のコードで利用されています。

System.Text.Encoding.GetEncoding (ssEncoding)

これは、.NET FrameworkのライブラリのSystem.Text.Encodingクラスのメソッドです。
https://docs.microsoft.com/en-us/dotnet/api/system.text.encoding.getencoding?view=netframework-4.6.1#System_Text_Encoding_GetEncoding_System_String_

このメソッドのパラメータの説明は以下

The code page name of the preferred encoding. Any value returned by the WebName property is valid. Possible values are listed in the Name column of the table that appears in the Encoding class topic.

Encoding Class下側の表のName列に書かれている文字列は使えるということのようです。

実はこの中には、shift_jisはあっても、shift-jisはないんですが。どちらを使うかというと、一応の根拠を公式ドキュメントに求められるshift_jisのほうがいいかもしれません。

1
0
0

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