Citrix ADCアプライアンスのポリシーインフラストラクチャでは、ASCIIおよびUTF-8文字セットがサポートされています。デフォルトの文字セットは ASCII です。式を設定するトラフィックが ASCII 文字だけで構成されている場合は、式に文字セットを指定する必要はありません。アプライアンスは、バイナリ文字を含むすべての文字列リテラルと文字リテラルを許可します。ただし、UTF-8 文字セットでは、文字列リテラルと文字リテラルが有効な UTF-8 である必要があります。
CLIENT.TCP.PAYLOAD(100).CONTAINS("\xff\x02")
式では、SET_CHAR_SET () 関数を式のポイントで導入する必要があります。このポイント以降は、指定した文字セットでデータ処理を実行する必要があります。たとえば、式 HTTP.REQ.BODY (1000) .AFTER_REGEX (再/次の例/) .BEFORE_REGEX (前の例/) .CONTAINS_ANY (「Greek_ alphabet」) で、パターンセット「Greek_alphabet」に格納されている文字列が UTF-8 の場合、SET_CHAR_SET を含める必要があります。(UTF_8) 関数\<string>次のように、CONTAINS_ANY (「\<string>」) 関数の直前に記述します。
HTTP.REQ.BODY(1000).AFTER_REGEX(re/following example/).BEFORE_REGEX(re/In the preceding example/).SET_CHAR_SET(UTF_8).CONTAINS_ANY("Greek_ alphabet")
SET_CHAR_SET () 関数は、後でその文字セットを変更する別の SET_CHAR_SET () 関数によって上書きされない限り、式内の以降のすべての処理 (つまり、後続のすべての関数) の文字セットを設定します。したがって、特定の単純な式のすべての関数が UTF-8 用である場合は、テキストを識別する関数 (HEADER (「\<name>」) または BODY () 関数など) の直後に SET_CHAR_SET (UTF_8 \<int>) 関数を含めることができます。上記の最初の段落に続く 2 番目の例では、AFTER_REGEX () 関数および BEFORE_REGEX () 関数に渡された ASCII 引数が UTF-8 文字列に変更された場合、次のように、BODY (1000) 関数の直後に SET_CHAR_SET (UTF_8) 関数を含めることができます。
HTTP.REQ.BODY(1000).SET_CHAR_SET(UTF_8).AFTER_REGEX(re/Bücher/).BEFORE_REGEX(re/Wörterbuch/).CONTAINS_ANY("Greek_alphabet")
UTF-8 文字セットは ASCII 文字セットのスーパーセットなので、文字セットを UTF-8 に変更しても、ASCII 文字セットに設定された式は期待どおりに動作し続けます。