CharEncoding (クラス)
public abstract CharEncoding
パッケージ: CURL.LANGUAGE.STRINGS

文字のエンコーディング/デコーディング アルゴリズムを示します。

オーバーライド

このクラスの実装の中で、トランスコード クラスを実装するメソッドとゲッターをすべて指定する必要があります。

注意事項

一部のエンコーディングでは、エンコード可能な文字セットが暗黙のうちに決まっています。たとえば、CharEncoding.ascii は \u0000 ~ \u007F の範囲の文字だけをエンコードできます。

説明

多数の CharEncoding がシステムによって提供されます。プロシージャ get-character-encoding-by-name を使用すれば、その名前が付いている CharEncoding を取得できます。また、String から CharEncoding への暗黙のコンストラクタがあります。これにより、CharEncoding が予想される場合はいつで String を使用できます。ただし、その名前の CharEncoding が存在することが分かっている必要があります。一部の CharEncoding はクラス定数としても使用できます。
  • ucs2-big-endian—これは、2 バイトからなる完全な Unicode エンコードです。上位バイトが第 1 バイトになります。実際には、UTF16 で実装されており、これはひとつの 16 ビットの値として Unicode 文字 <= 0xFFFF と、16 ビットのサロゲート ペアとして上位の Unicode 文字で表現されます。CharEncoding.ucs2-big-endian で利用できるか、get-character-encoding-by-name を使用して検索できます。
  • ucs2-little-endian—これは、2 バイトからなる完全な Unicode エンコードです。下位バイトが第 1 バイトになります。CharEncoding.ucs2-little-endian で利用できるか、get-character-encoding-by-name を使用して検索できます。
  • ucs2-unknown-endian—これは、データがどちらのバイト オーダー マークで始まっているかによって、ucs2-big-endian または ucs2-little-endian のいずれかと同じになります。 バイト オーダー マークがない場合は、ucs2-big-endian が既定値になります。このエンコードをサポートするのはバイト オーダー マークを処理できるもの (TranscodingTextInputStream など) だけであることに、注意してください。decode-charactersencode-characters はこの種のエンコードをサポートしません。CharEncoding.ucs2-unknown-endian で利用できるか、get-character-encoding-by-name を使用して検索できます。
  • utf8—これは、各文字のバイト数が可変である完全な Unicode エンコードです。ucs2-big-endian バイトと utf8 バイト間のマッピングは次のとおりです。
    utf32              -> utf8
    00000000 0xxxxxxx -> 0xxxxxxx
    00000yyy yyxxxxxx -> 110yyyyy 10xxxxxx
    zzzzyyyy yyxxxxxx -> 1110zzzz 10yyyyyy 10xxxxxx
    000uuuuu zzzzyyyy yyxxxxxx -> 11110uuu 10uuzzzz 10yyyyyy 10xxxxxx
    
    CharEncoding.utf8 で利用できるか、get-character-encoding-by-name を使用して検索できます。
  • ascii—このエンコードは、Unicode 値 \u0000~\u007F のみを表すことができます。上位バイトと下位バイトの先頭ビットを除去することによってそうします。CharEncoding.ascii で利用できるか、get-character-encoding-by-name を使用して検索できます。
  • iso-latin-1—このエンコードは、Unicode 値 \u0000~\u00FF のみを表すことができます。上位バイトを除去することによってそうします。このエンコードは ISO-8859-1 としても知られています。これは多くのヨーロッパ言語に適しています。CharEncoding.iso-latin-1 で利用できるか、get-character-encoding-by-name を使用して検索できます。
  • windows-latin-1—このエンコードは多くのヨーロッパ言語に適しています。このエンコードは Windows-1252 としても知られています。このエンコードは、コード 0x80 (128) ~ 0x9F (159) が unicode.org にある CP1252 - Unicode テーブルにリストされているように定義されている点を除けば、CharEncoding.iso-latin-1 と同じです。
    CharEncoding.windows-latin-1 で利用できるか、get-character-encoding-by-name を使用して検索できます。
  • iso-latin-2—このエンコードは、クロアチア語、チェコ語、ハンガリー語、ポーランド語、ルーマニア語、スロバキア語、スロベニア語、セルビア語など、さまざまな中央ヨーロッパおよび東ヨーロッパ言語に対して使用されます。このエンコードは ISO-8859-2 としても知られています。このエンコードは、コード 0xA1 (161) ~ 0xFF (255) が unicode.org にある ISO 8859-2 - Unicode テーブルにリストされているように定義されている点を除けば、CharEncoding.iso-latin-1 と同じです。
  • iso-latin-3—このエンコードはエスペラントおよびマルタ語に対して使用されます。このエンコードは ISO-8859-3 としても知られています。このエンコードは、コード 0xA1 (161) ~ 0xFF (255) が unicode.org にある ISO 8859-3 - Unicode テーブルにリストされているように定義されている点を除けば、CharEncoding.iso-latin-1 と同じです。
  • iso-latin-4—このエンコードは、デンマーク語、エストニア語、フィンランド語、ラトビア語、リトアニア語、ラップ語、およびスロベニア語に対して使用されます。このエンコードは ISO-8859-4 としても知られています。このエンコードは、コード 0xA1 (161) ~ 0xFF (255) が unicode.org にある ISO 8859-4 - Unicode テーブルにリストされているように定義されている点を除けば、CharEncoding.iso-latin-1 と同じです。
  • iso-cyrillic—このエンコードは、ブルガリア語、ベラルーシ語、マケドニア語、ロシア語、セルビア語、および 1990 年以前のウクライナ語に対して使用されます。このエンコードは ISO-8859-5 としても知られています。このエンコードは、コード 0xA1 (161) ~ 0xFF (255) が unicode.org にある ISO 8859-5 - Unicode テーブルにリストされているように定義されている点を除けば、CharEncoding.iso-latin-1 と同じです。
  • iso-greek—このエンコードは現代ギリシャ語に対して使用できます。このエンコードは ISO-8859-7、ELOT-928、または ECMA-118:1986 としても知られています。このエンコードは、コード 0xA1 (161) ~ 0xFF (255) が unicode.org にある ISO 8859-7 - Unicode テーブルにリストされているように定義されている点を除けば、CharEncoding.iso-latin-1 と同じです。
  • iso-latin-5—このエンコードは CharEncoding.iso-latin-1 を若干変更したもので、これと同じ言語に対して使用できます。ただし、まれに必要になる一部のアイスランド語の文字がトルコ語の文字に置換されます。このエンコードは ISO-8859-9 としても知られています。このエンコードは、0x80 (128) より上位の少数のコードが ISO 8859-9 - Unicode テーブルにリストされているように定義されている点を除けば、 CharEncoding.iso-latin-1 と同じです。
  • iso-latin-6—このエンコードは CharEncoding.iso-latin-4 を若干変更したもので、これと同じ言語に対して使用できます。ただし、一部の文字の配置が異なり、また部分的に追加と削除が行われています。 このエンコードは ISO-8859-10 としても知られています。このエンコードは、コード 0xA1 (161) ~ 0xFF (255) が unicode.org にある ISO 8859-10 - Unicode テーブルにリストされているように定義されている点を除けば、CharEncoding.iso-latin-1 と同じです。
  • iso-latin-7—このエンコードは、CharEncoding.iso-latin-4 とほぼ同じ言語をサポートします。このエンコードは ISO-8859-13 としても知られています。このエンコードは、コード 0xA1 (161) ~ 0xFF (255) が unicode.org にある ISO 8859-13 - Unicode テーブルにリストされているように定義されている点を除けば、CharEncoding.iso-latin-1 と同じです。
  • iso-latin-8—このエンコードは CharEncoding.iso-latin-1 を若干変更したものであり、ゲール語およびウェールズ語に対して使用できます。このエンコードは ISO-8859-14 としても知られています。このエンコードは、コード 0xA1 (161) ~ 0xFF (255) が unicode.org にある ISO 8859-14 - Unicode テーブルにリストされているように定義されている点を除けば、CharEncoding.iso-latin-1 と同じです。
  • iso-latin-9—このエンコードは CharEncoding.iso-latin-1 を若干変更したものであり、これと同じ言語に対して使用できます。ただし、国際通貨記号をユーロ記号に、また一部の記号をフランス語およびフィンランド語の文字にそれぞれ置き換えています。このエンコードは ISO-8859-15 としても知られています。このエンコードは、0x80 (128) より上位の少数のコードが unicode.org にある ISO 8859-15 - Unicode テーブルにリストされているように定義されている点を除けば、CharEncoding.iso-latin-1 と同じです。
  • windows-latin-2—このエンコードは、クロアチア語、チェコ語、ハンガリー語、ポーランド語、ルーマニア語、スロバキア語、スロベニア語、セルビア語など、さまざまな中央ヨーロッパ言語、東ヨーロッパ言語、およびバルト諸国語に対して使用できます。 このエンコードは CP1250 および Windows-1250 としても知られています。このエンコードは、コード 0x80 (128) ~ 0xFF (255) が unicode.org にある CP1250 - Unicode テーブルにリストされているように定義されている点を除けば、CharEncoding.iso-latin-1 と同じです。
  • windows-cyrillic—このエンコードは、ブルガリア語、ベロルシア語、マケドニア語、ロシア語、セルビア語、およびウクライナ語に対して使用できます。このエンコードは CP1251 および Windows-1251 としても知られています。このエンコードは、コード 0x80 (128) ~ 0xFF (255) が unicode.org にある CP1251 - Unicode テーブルにリストされているように定義されている点を除けば、CharEncoding.iso-latin-1 と同じです。
  • windows-greek—このエンコードは現代ギリシャ語に対して使用できます。このエンコードは CP1253 および Windows-1253 としても知られています。このエンコードは、コード 0x80 (128) ~ 0xFF (255) が unicode.org にある CP1253 - Unicode テーブルにリストされているように定義されている点を除けば、CharEncoding.iso-latin-1 と同じです。
  • windows-turkish—このエンコードはトルコ語に対して使用できます。このエンコードは CP1254 および Windows-1254 としても知られています。このエンコードは、コード 0x80 (128) ~ 0xFF (255) が unicode.org にある CP1254 - Unicode テーブルにリストされているように定義されている点を除けば、CharEncoding.iso-latin-1 と同じです。
  • windows-baltic—このエンコードは、クロアチア語、チェコ語、ハンガリー語、ポーランド語、ルーマニア語、スロバキア語、スロベニア語、セルビア語など、さまざまな中央ヨーロッパ言語、東ヨーロッパ言語、およびバルト諸国語に対して使用されます。このエンコードは CP1257 および Windows-1257 としても知られています。このエンコードは、コード 0x80 (128) ~ 0xFF (255) が unicode.org にある CP1257 - Unicode テーブルにリストされているように定義されている点を除けば、CharEncoding.iso-latin-1 と同じです。
  • koi8-r—このエンコードは、ブルガリア語、ベラルーシ語、マケドニア語、ロシア語、セルビア語、およびウクライナ語に対して使用できます。このエンコードは CP878 としても知られています。このエンコードは、コード 0x80 (128) ~ 0xFF (255) が unicode.org にある KOI8-R - Unicode テーブルにリストされているように定義されている点を除けば、CharEncoding.iso-latin-1 と同じです。
  • koi8-u—このエンコードは、ブルガリア語、ベラルーシ語、マケドニア語、ロシア語、セルビア語、およびウクライナ語に対して使用できます。このエンコードは、コード 0x80 (128) ~ 0xFF (255) が ietf.org にある RFC 2319 にリストされているように定義されている点を除けば、CharEncoding.iso-latin-1 と同じです。
  • dos-cyrillic—このエンコードは、ブルガリア語、ベラルーシ語、マケドニア語、ロシア語、セルビア語、およびウクライナ語に対して使用できます。このエンコードは CP866 としても知られています。このエンコードは、コード 0x80 (128) ~ 0xFF (255) が unicode.org にある CP866 - Unicode テーブルにリストされているように定義されている点を除けば、CharEncoding.iso-latin-1 と同じです。
  • shift-jis—このエンコードは、英語および日本語に対して使用できます。ただし、その他の一部の言語も部分的にサポートしています。このエンコードは Shift_JIS としても知られています。このエンコードは、コード 0 ~ 0x7E の部分は CharEncoding.ascii と同様です。コード 0xA1 ~ 0xDF の部分は JIS X 0201 の半角カタカナです。このエンコードには、文字セット JIS X 0208:1997 に対して使われる 2 バイト エンコードも含まれています。この 2 バイト エンコードは、Microsoft Code Page 932 によって補完されています。コード ページ 932 では、NEC (行 13)、IBM 選択文字 (行 115 ~ 119)、NEC によって移動された IBM 選択文字 (行 89 ~ 92) をそれぞれ追加しています。
  • euc-jp—このエンコードは、英語および日本語に対して使用できます。ただし、その他の一部の言語も部分的にサポートしています。このエンコードは EUC-JP としても知られています。このエンコードは、0x8E バイトに続くとき、コード 0 ~ 0x7E の部分は CharEncoding.ascii と同様です。コード 0xA1 ~ 0xDF の部分は JIS X 0201 の半角カタカナです。このエンコードには、文字セット JIS X 0208:1997 に対して使われる 2 バイト エンコード、および文字セット JIS X 0212-1990 に対して使われる 3 バイト エンコードも含まれています。このエンコードは、JIS X 0208:1997 に追加された Microsoft のコード ページ 932 によって補完されません。
  • euc-kr—このエンコードは英語および韓国語に対して使用できます。これは KSC5601 に指定されたエンコードを表します。より具体的には、このエンコードは、unicode.org にある 統一ハングル文字 (KSC5601-1992) - Unicode テーブルを実装します。
  • none-specified—これはエンコードではありません。これは、未指定のエンコードを表します。一部の関数では、この値が使われた場合、エンコードを自動的に特定しようとします。CharEncoding.none-specified で利用できるか、get-character-encoding-by-name を使用して検索できます。このエンコードの CharEncoding.transcode-min-expansion-factor はすべての登録済みエンコードの最小 transcode-min-expansion-factor を返し、CharEncoding.transcode-max-expansion-factor はすべての登録済みエンコードの最大 transcode-min-expansion-factor を返します。

  • コンストラクタ
    from-name:該当する名前の CharEncoding を返します。
    ファクトリ public implicit {CharEncoding.from-name name:String}:CharEncoding

    プロパティ
    aliases:このトランスコーダに対する別名。このエンコーディングを検索する際にも使用できます。
    アクセサ public abstract CharEncoding.aliases:#{Array-of String}
    display-name:このトランスコーダーのユーザーが識別できるような名前で、ドロップダウン リストなどで使われます。
    アクセサ public CharEncoding.display-name:String
    max-byte-marker-size:CharEncoding.check-byte-marker がこの CharEncoding に対して何かを実行できるかどうかを調べるための最大バイト数。
    アクセサ public abstract CharEncoding.max-byte-marker-size:int
    min-byte-marker-size:CharEncoding.check-byte-marker がこの CharEncoding に対して何かを実行するのに必要な必要な最小バイト数。
    アクセサ deprecated public CharEncoding.min-byte-marker-size:int
    name:このトランスコーダに対する一次名。このエンコーディングを検索する際に使われます。
    アクセサ public abstract CharEncoding.name:String
    transcode-max-expansion-factor:この文字エンコーディングにおいて文字をエンコードするために必要なバイト数の上限。
    アクセサ public abstract CharEncoding.transcode-max-expansion-factor:int
    transcode-min-expansion-factor:この文字エンコーディングにおいて文字をエンコードするために必要なバイト数の下限。
    アクセサ public abstract CharEncoding.transcode-min-expansion-factor:int

    クラス変数と定数
    ascii:CharEncoding を参照してください。
    public constant CharEncoding.ascii:CharEncoding ={SingleByteCharEncoding "ascii", null, 0x7F}
    iso-latin-1:CharEncoding を参照してください。
    public constant CharEncoding.iso-latin-1:CharEncoding ={SingleByteCharEncoding "iso-latin-1", null, 0xFF}
    none-specified:CharEncoding を参照してください。
    public constant CharEncoding.none-specified:CharEncoding ={new NoneCharEncoding}
    ucs2-big-endian:CharEncoding を参照してください。
    public constant CharEncoding.ucs2-big-endian:CharEncoding ={UTF16CharEncoding "ucs2-big-endian", ||"" {StringArray efficient-size = 1, "utf16-big-endian"}, ||"" false }
    ucs2-little-endian:CharEncoding を参照してください。
    public constant CharEncoding.ucs2-little-endian:CharEncoding ={UTF16CharEncoding "ucs2-little-endian", ||"" {StringArray efficient-size = 1, "utf16-little-endian"}, ||"" true }
    ucs2-unknown-endian:CharEncoding を参照してください。
    public constant CharEncoding.ucs2-unknown-endian:CharEncoding ={UTF16UnknownEndianCharEncoding}
    utf8:CharEncoding を参照してください。
    public constant CharEncoding.utf8:CharEncoding ={UTF8CharEncoding "utf8", write-byte-marker? = false}
    windows-latin-1:CharEncoding を参照してください。
    public constant CharEncoding.windows-latin-1:CharEncoding ={MappedSingleByteCharEncoding "windows-latin-1", null, windows-latin-1-reverse-map ||"" }

    クラス プロシージャ
    get-default-for-locale:指定された Locale を使用するユーザーがドキュメントで使用していると考えられるエンコーディング、ローカル OS の既定エンコーディングを最もよく表す CharEncoding を取得します。
    public {CharEncoding.get-default-for-locale
    locale:Locale
    }:#CharEncoding

    メソッド
    all-chars-in-encoding?:バッファ内のすべての文字が文字エンコーディング メソッドに必要な文字セットの中に含まれているかどうかを判断します。
    public abstract {CharEncoding.all-chars-in-encoding?
    buf:CharVec,
    start:int = 0,
    end:int = buf.size
    }:bool
    check-byte-marker:この CharEncoding のバイト マーカーがデータの先頭にあるかどうかを示します。
    public abstract {CharEncoding.check-byte-marker
    data:ByteVec,
    length:int = data.size
    }:(matches?:bool, bytes-consumed:int)
    concat-byte-marker:このエンコーディングに適したバイト マーカーを形成するバイトを ByteVec に追加します。
    public abstract {CharEncoding.concat-byte-marker
    bytes:ByteVec,
    start:int = 0
    }:int
    decode-characters:char の配列を byte の配列に変換します。
    public abstract {CharEncoding.decode-characters
    in:ByteVec,
    out:CharVec,
    in-start:int = 0,
    in-end:int = in.size,
    out-start:int = out.size,
    out-end:int = out.max-size,
    always-resize-out?:bool = true
    }:(in-used:int, out-made:int)
    encode-characters:char の配列を byte の配列に変換します。
    public abstract {CharEncoding.encode-characters
    in:CharVec,
    out:ByteVec,
    in-start:int = 0,
    in-end:int = in.size,
    out-start:int = out.size,
    out-end:int = out.max-size,
    always-resize-out?:bool = true
    }:(in-used:int, out-made:int)
    メソッド 継承 Object: object-describe, object-describe-for-debugging, object-serialize



    コンストラクタ詳細
    from-name (ファクトリ)
    public implicit {CharEncoding.from-name name:String}:CharEncoding

    該当する名前の CharEncoding を返します。

    name: エンコーディングの名前。

    説明

    nameget-character-encoding-by-name を呼び出します。



    プロパティ詳細
    aliases (アクセサ)
    アクセサ public abstract CharEncoding.aliases:#{Array-of String}

    このトランスコーダに対する別名。このエンコーディングを検索する際にも使用できます。

    オーバーライド

    非抽象サブクラスにおいては、null だけを返す場合でも、必ずこの別名を指定する必要があります。


    display-name (アクセサ)
    アクセサ public CharEncoding.display-name:String

    このトランスコーダーのユーザーが識別できるような名前で、ドロップダウン リストなどで使われます。



    max-byte-marker-size (アクセサ)
    アクセサ public abstract CharEncoding.max-byte-marker-size:int

    CharEncoding.check-byte-marker がこの CharEncoding に対して何かを実行できるかどうかを調べるための最大バイト数。

    注意事項

    この CharEncoding がバイト マーカーを実行しない場合、0 になります。

    オーバーライド

    非抽象クラスは、必ずこのアクセッサを実装する必要があります。


    min-byte-marker-size (アクセサ)
    アクセサ deprecated public CharEncoding.min-byte-marker-size:int

    CharEncoding.check-byte-marker がこの CharEncoding に対して何かを実行するのに必要な必要な最小バイト数。

    注意事項

    この CharEncoding がバイト マーカーを実行しない場合、0 になります。

    プログラミング注意事項

    この値は必要ではありません。また、常に CharEncoding.max-byte-marker-size と等しくなります。必要に応じて CharEncoding.check-byte-marker を呼び出します。CharEncoding.check-byte-marker は、バイト マーカーが存在しない場合、またはバイト マーカーをチェックするためのデータが十分にない場合、false を返します。


    name (アクセサ)
    アクセサ public abstract CharEncoding.name:String

    このトランスコーダに対する一次名。このエンコーディングを検索する際に使われます。

    オーバーライド

    非抽象サブクラスは、これを提供する必要があります。


    transcode-max-expansion-factor (アクセサ)
    アクセサ public abstract CharEncoding.transcode-max-expansion-factor:int

    この文字エンコーディングにおいて文字をエンコードするために必要なバイト数の上限。

    オーバーライド

    非抽象サブクラスは、これを提供する必要があります。


    transcode-min-expansion-factor (アクセサ)
    アクセサ public abstract CharEncoding.transcode-min-expansion-factor:int

    この文字エンコーディングにおいて文字をエンコードするために必要なバイト数の下限。

    オーバーライド

    非抽象サブクラスは、これを提供する必要があります。



    クラス変数と定数の詳細
    ascii (クラス定数)
    public constant CharEncoding.ascii:CharEncoding ={SingleByteCharEncoding "ascii", null, 0x7F}

    CharEncoding を参照してください。



    iso-latin-1 (クラス定数)
    public constant CharEncoding.iso-latin-1:CharEncoding ={SingleByteCharEncoding "iso-latin-1", null, 0xFF}

    CharEncoding を参照してください。



    none-specified (クラス定数)
    public constant CharEncoding.none-specified:CharEncoding ={new NoneCharEncoding}

    CharEncoding を参照してください。



    ucs2-big-endian (クラス定数)
    public constant CharEncoding.ucs2-big-endian:CharEncoding ={UTF16CharEncoding "ucs2-big-endian", ||"" {StringArray efficient-size = 1, "utf16-big-endian"}, ||"" false }

    CharEncoding を参照してください。



    ucs2-little-endian (クラス定数)
    public constant CharEncoding.ucs2-little-endian:CharEncoding ={UTF16CharEncoding "ucs2-little-endian", ||"" {StringArray efficient-size = 1, "utf16-little-endian"}, ||"" true }

    CharEncoding を参照してください。



    ucs2-unknown-endian (クラス定数)
    public constant CharEncoding.ucs2-unknown-endian:CharEncoding ={UTF16UnknownEndianCharEncoding}

    CharEncoding を参照してください。



    utf8 (クラス定数)
    public constant CharEncoding.utf8:CharEncoding ={UTF8CharEncoding "utf8", write-byte-marker? = false}

    CharEncoding を参照してください。



    windows-latin-1 (クラス定数)
    public constant CharEncoding.windows-latin-1:CharEncoding ={MappedSingleByteCharEncoding "windows-latin-1", null, windows-latin-1-reverse-map ||"" }

    CharEncoding を参照してください。




    クラス プロシージャ詳細
    get-default-for-locale (クラスプロシージャ)
    public {CharEncoding.get-default-for-locale
    locale:Locale
    }:#CharEncoding

    指定された Locale を使用するユーザーがドキュメントで使用していると考えられるエンコーディング、ローカル OS の既定エンコーディングを最もよく表す CharEncoding を取得します。

    locale: 既定の CharEncoding を推定する対象の Locale

    戻り値

    locale に対する既定の CharEncoding を返すか、該当する CharEncoding を確定できない場合は null を返します。



    メソッド詳細
    all-chars-in-encoding? (メソッド)
    public abstract {CharEncoding.all-chars-in-encoding?
    buf:CharVec,
    start:int = 0,
    end:int = buf.size
    }:bool

    バッファ内のすべての文字が文字エンコーディング メソッドに必要な文字セットの中に含まれているかどうかを判断します。

    buf: 検査対象の文字を格納します。
    start: 検査対象となる最初の文字のインデックス。指定しない場合、既定値は配列の先頭です。
    end: 検査対象の最後の文字のインデックスの次のインデックス。指定しない場合、既定値は配列の現在の末尾 (buf.size) です。

    戻り値

    すべての文字がその文字セット内に存在する場合は true、文字セット内に存在しない文字がある場合は false になります。


    check-byte-marker (メソッド)
    public abstract {CharEncoding.check-byte-marker
    data:ByteVec,
    length:int = data.size
    }:(matches?:bool, bytes-consumed:int)

    この CharEncoding のバイト マーカーがデータの先頭にあるかどうかを示します。

    data: ファイル、またはエンコードされた文字列データの開始からのバイト。
    length: data の中のバイト数。ポジション 0 からのバイトが正当です。

    戻り値

    この CharEncoding 自体のバイト マーカーがあるかどうかを示す bool、および data 内にある、消費されていて文字データと見なされないバイト数。

    注意事項

    この CharEncodingCharEncoding.max-byte-marker-size0 である場合、これは常に false を返します。

    注意事項

    このメソッドは通常、バイト データのエンコーディングを自動的に判断しようとするコードによって呼び出されます。従ってこのメソッドは、一致するデータを返すまでの間、すべての登録済み CharEncoding に対して transcode-determine-character-encoding として呼び出されます。あるいは、データが特定の CharEncoding に対するものであり、かつ、スキップすべきバイト マーカーが存在するかどうかを検査する必要がある場合、このメソッドが呼び出されます。

    オーバーライド

    非抽象クラスは、このメソッドを実装する必要があります。エンコーディングの中でバイト マーカーが設定されていない場合、false, 0 を返すメソッドを 1 つだけ実装します。


    concat-byte-marker (メソッド)
    public abstract {CharEncoding.concat-byte-marker
    bytes:ByteVec,
    start:int = 0
    }:int

    このエンコーディングに適したバイト マーカーを形成するバイトを ByteVec に追加します。

    bytes: バイト マーカーの追加先となる ByteVec。データは start の位置から上書きまたは追加されます。
    start: バイト マーカーを連結する開始インデックス。

    戻り値

    バイトに追加されるバイト数。

    オーバーライド

    非抽象クラスは、このメソッドを実装する必要があります。エンコーディングがバイト マーカーを持たない場合、0 を返すメソッドを 1 つだけ実装します。


    decode-characters (メソッド)
    public abstract {CharEncoding.decode-characters
    in:ByteVec,
    out:CharVec,
    in-start:int = 0,
    in-end:int = in.size,
    out-start:int = out.size,
    out-end:int = out.max-size,
    always-resize-out?:bool = true
    }:(in-used:int, out-made:int)

    char の配列を byte の配列に変換します。

    プログラミング注意事項

    char の配列をエンコードのために in に渡し、 out から byte の配列を受け取ります。

    戻り値

    入力配列からデコードされたバイトの数、および、デコードされた文字の数。

    注意事項

    最初の戻り値が予想に反してゼロであった場合は、1 文字を丸ごとデコードするだけのバイト数を in から入手できるか確認してください。さらに、out に少なくとも 1 文字分のスペースがあるか確認してください。

    注意事項

    デコーディングによって生成される最大文字数を調べるには、入力バイト数を CharEncoding.transcode-min-expansion-factor で割った結果に 1 を加算します。

    オーバーライド

    非抽象クラスは、必ずこのアクセッサを実装する必要があります。
    in: デコードするバイト列が格納される配列。この配列が空の場合、バイト列はデコードされません。
    out: デコードされた文字が格納される配列。この配列がすべてデータで埋まっている場合、バイト列はデコードされません。
    in-start: 入力配列内からデコードされる先頭バイトのインデックス。指定しない場合、既定値は配列の先頭です。
    in-end: 入力配列内におけるデコード対象の末尾バイトのインデックスの直後のインデックス。指定しない場合、既定値は配列の現在の末尾 (in.size) です。
    out-start: 出力配列内において、デコードされた文字が格納される先頭文字の位置のインデックス。指定しない場合、既定値は配列の現在の末尾 (out.size) です。
    out-end: 出力配列内において、デコードされた文字が格納される末尾文字の位置の直後のインデックス。指定しない場合、既定値は出力配列の拡張位置の上限 (out.max-size) です。
    always-resize-out?: 出力データのサイズが out の現在のサイズよりも小さい場合に、out のサイズを変更するかどうかを示します。

    注意事項

    不正なバイトの並びが検出された場合、TranscodingException をスローする必要があります。その際、in-used および out-made の値 (戻り値) を TranscodingException のコンストラクタに渡します。


    encode-characters (メソッド)
    public abstract {CharEncoding.encode-characters
    in:CharVec,
    out:ByteVec,
    in-start:int = 0,
    in-end:int = in.size,
    out-start:int = out.size,
    out-end:int = out.max-size,
    always-resize-out?:bool = true
    }:(in-used:int, out-made:int)

    char の配列を byte の配列に変換します。

    プログラミング注意事項

    char の配列をエンコードのために in に渡し、 out から byte の配列を受け取ります。

    戻り値

    入力配列にあるエンコード元の文字の数、および、出力されたバイトの数。

    注意事項

    最初の戻り値が予想に反してゼロであった場合は、1 文字を丸ごとデコードするだけのバイト数を in から入手できるか確認してください。さらに、out に少なくとも 1 文字分のスペースがあるか確認してください。

    注意事項

    CharEncoding.encode-characters を呼び出します。
    in: エンコード元の文字が格納される配列。この配列が空の場合、文字はエンコードされません。
    out: バイトが格納される配列。この配列がすべてデータで埋まっている場合、バイトは付加されません。

    注意事項

    エンコーディングによって生成されるバイトの最大数を調べるには、入力文字数と CharEncoding.transcode-max-expansion-factor を乗算します。
    in-start: 入力配列内におけるエンコード対象の先頭文字のインデックス。指定しない場合、既定値は配列の先頭です。
    in-end: 入力配列内におけるエンコード対象の末尾文字の直後のインデックス。指定しない場合、既定値は配列の現在の末尾 (in.size) です。
    out-start: 出力配列内における、エンコードされたバイト列が格納される先頭バイトのインデックス。指定しない場合、既定値は配列の現在の末尾 (out.size) です。
    out-end: 出力配列内において、エンコードされたバイトが格納される末尾バイトの直後のインデックス。指定しない場合、既定値は出力配列を拡張できる上限の位置 (out.max-size) です。
    always-resize-out?: 出力データのサイズが out の現在のサイズよりも小さい場合に、out のサイズを変更するかどうかを示します。

    注意事項

    不正なまたはエンコード不可能な文字が検出された場合、TranscodingException をスローする必要があります。その際、in-used および out-made の値 (戻り値) を TranscodingException のコンストラクタに渡します。