Home > リファレンスガイド > プロジェクト > コンテンツエンコード処理

コンテンツエンコード処理

Magic xpiには、以下のテキストのエンコーディングに対するビルトインのサポート機能があります。

バイナリは、テキストでない内容を表します。TrimやInStrなどのテキスト関数はバイナリ上では利用できません。

テキストデータ操作で動作する場合、Magic xpiは自動的にエンコーディング変換を行い、通常は結果をUnicodeに変換します。

UTF-8エンコーディングのビルトインのサポートはありません。以下のUTF-8の内容のセクションを参照してください。

 

UnicodeのBLOBをAnsi BLOBで更新すると、Magic xpiは最初にAnsiの内容をUnicodeに変換し、UnicodeデータによってUnicode BLOBを更新します。

Ansi BLOBをUnicode BLOBで更新すると、Magic xpiは、最初にUnicodeの内容をAnsiに変換し、AnsiデータによってAnsi BLOBを更新します。

UnicodeまたはAnsi のどちらかのBLOBをバイナリBLOBで更新すると、データはそのまま更新されます。変換処理は行われず、結果は、BLOBタイプとBLOBの内容の間での不整合が発生します。

バイナリBLOBを任意のBLOBタイプで更新した場合、データはそのまま渡されます。送り元がUnicodeの場合、Unicodeの内容がそのままで渡され、結果としてバイナリBLOBにはBOMがない状態になります。

 

値を変数(Flow Data、データマッパー変数、およびフロー送り先呼出)にマッピングすると、この変数が保持する内容のエンコーディングを選択することができます。Magic xpiは自動的に選択されたコンテントタイプへの変換を実行します。

File2Blob の動作

ファイルがUnicode BOMを含んでいる場合、内容はBOMなしでそのままで読み込まれ、内容を保持するように選択されたBlobタイプで変換されます。

ファイルがUTF-8 BOMを含んでいる場合、内容はUTF-8からUnicodeに変換します。内容を保持するように選択されたBlobタイプに変換されます。

ファイルがUTF-8 BOMを含んでいない場合、内容はAnsiとして処理され、Ansiから、内容を保持するように選択されたBlobタイプに変換されます。この部分には、バイナリとUTF-8とAnsiの内容が含まれています。

Blob2File の動作

BlobがバイナリかAnsiの場合、ファイルの内容はバイナリのBlobと同じ内容になります。

Unicodeの場合、Unicodeファイル(Unicode であることがわかっているので、Unioce BOMにはBOMが含まれていません)であることを示すためにファイルの最初にBOMが付加されます。

UTF-8 コンテンツ

Magic xpiはUTF-8エンコーディングを標準的にサポートしていません。UTF-8への(からの)変換だけが可能です(例えば、入出力関数で)。BOMが存在している場合、BOMを含むバイナリBlobにUTF-8を格納する必要があります。テキスト処理が必要な場合、UTF8toUnicode関数を使用してUnicodeに転換してください。必要なら、データはUTF8fromUnicode関数を使用して、UTF-8に戻すことができます。

UTF-8では、BLOB(内部はバイナリと定義されています)上で文字関数を使用すると、マルチバイトでエンコードされた文字を失います。

この問題を解決するには、UTF-8の内容を、サポートされる他のコンテントタイプに変換することができるユーティリティ関数を選択機能が提供されます。

UTF-8がバイナリBLOB内に格納されている場合、UTF-8の内容をファイルシステムに保存すると、内容は「そのまま」保存されます。BOMがBLOBデータの一部である場合、ファイルはBOMを持つことになります。

UTF-8を含むファイルには、BOMを含める必要性はありません。しかし、BOMを含まないUTF-8コンテンツ・ファイルの正確な識別は保証されません。また、識別処理にも時間がかかります。UTF-8ファイルには常にBOMが含まれているようにすることを強く推奨します。UTF-8ファイルが常にBOM付きで作成されることを保証するためにBlobAddBOM関数を使用することができます。

関連トピック