Home > リファレンスガイド > プロジェクト > コンテンツエンコード処理
Magic xpiには、以下のテキストのエンコーディングに対するビルトインのサポート機能があります。
Ansi …… 英語に加え、1つのコードページで表示することができます。
Unicode (UTF-16) …… 一度に複数のコードページで表示させることができます。詳細は、ユニコード サポートを参照してください。
バイナリは、原文通りでない内容を表しています。
バイナリは、テキストでない内容を表します。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関数を使用することができます。 |
関連トピック