プラットフォームのランタイム・プラグインは、データ・ストリームのコンテンツ型を定義および検出するインフラストラクチャーを定義します。 (コンテンツ・フレームワークの概要については、『コンテンツ型』を参照してください。) コンテンツ型システムでは、さまざまな種類のコンテンツのさまざまなエンコード (文字セット) を指定する機能が重要となります。 リソース API を使用すると、さらにプロジェクト、フォルダー、およびファイルに対してデフォルトの文字セットを設定することができます。このデフォルトの文字セットは、ファイル自体のコンテンツがデータ・ストリーム内に特定のエンコード方式を定義していない場合に照会されます。
『コンテンツ型』では、コンテンツ型に対してデフォルトのファイルのエンコードを設定することについて説明しました。 リソース API には、より細かく調整されたコントロールがあります。
IContainer は、 特定のプロジェクトまたはフォルダーに対してデフォルトの文字セットを設定するプロトコルを定義します。これにより、プラグイン (最終的にはユーザー) は、コンテンツ型のデフォルトの文字セットが適切でない場合に、適切な文字セットをより自由に決定することができます。
IFile は、 特定のファイルに対してデフォルトの文字セットを設定する API を定義します。 ファイル・コンテンツ内にエンコード方式が指定されていない場合は、この文字セットが使用されます。 ファイルのデフォルトの文字セットは、ファイルのフォルダー、プロジェクト、またはコンテンツ型に指定されているデフォルトの文字セットよりも優先されます。
エンド・ユーザーは、これらのフィーチャーをリソースのプロパティー・ページで使用できます。
IFile は、ファイルの文字セットを照会する API も定義します。ブール・フラグは、ファイルに対して明示的に定義されている文字セットのみが戻されるか、または暗黙の文字セットも戻されるかを指定します。以下に例を示します。
String charset = myFile.getCharset(false);
myFile に明示的に設定されている文字セットがない場合は、ヌルが戻されます。
ただし、
String charset = myFile.getCharset(true);
上記の場合は、ファイルに明示的に設定されている文字セットが最初に確認されます。
そのような文字セットがない場合は、ファイルのコンテンツに文字セットの記述がないか確認されます。
そのような記述がない場合は、ファイルに含まれているフォルダーおよびプロジェクトにデフォルトの文字セットがないか確認されます。そのような文字セットがない場合は、コンテンツ型自体に定義されているデフォルトの文字セットが確認されます。最後に、他にデフォルトの文字セットが指定されていない場合、プラットフォームのデフォルトの文字セットが戻されます。便利なメソッド getCharset() は、getCharset(true) を使用した場合と同じです。