OutSystemsでShift-JISやEUC-JPのデータを扱う
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を追加しておきます。
使い方
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のほうがいいかもしれません。
Author And Source
この問題について(OutSystemsでShift-JISやEUC-JPのデータを扱う), 我々は、より多くの情報をここで見つけました https://qiita.com/jyunji_watanabe/items/2cf894fec45c3d3b7628著者帰属:元の著者の情報は、元のURLに含まれています。著作権は原作者に属する。
Content is automatically searched and collected through network algorithms . If there is a violation . Please contact us . We will adjust (correct author information ,or delete content ) as soon as possible .