(クラス)
public abstract CharEncoding
文字のエンコーディング/デコーディング アルゴリズムを示します。
オーバーライド
このクラスの実装の中で、トランスコード クラスを実装するメソッドとゲッターをすべて指定する必要があります。
注意事項
一部のエンコーディングでは、エンコード可能な文字セットが暗黙のうちに決まっています。たとえば、CharEncoding.ascii は \u0000 ~ \u007F の範囲の文字だけをエンコードできます。
説明
多数の
CharEncoding がシステムによって提供されます。プロシージャ
get-character-encoding-by-name を使用すれば、その名前が付いている
CharEncoding を取得できます。また、
String から
CharEncoding への暗黙のコンストラクタがあります。これにより、
CharEncoding が予想される場合はいつで
String を使用できます。ただし、その名前の
CharEncoding が存在することが分かっている必要があります。一部の
CharEncoding はクラス定数としても使用できます。
aliases: | このトランスコーダに対する別名。このエンコーディングを検索する際にも使用できます。 |
アクセサ public abstract CharEncoding.aliases:#{
Array-of String}
display-name: | このトランスコーダーのユーザーが識別できるような名前で、ドロップダウン リストなどで使われます。 |
アクセサ public CharEncoding.display-name:
String
アクセサ public abstract CharEncoding.max-byte-marker-size:
int
アクセサ deprecated public CharEncoding.min-byte-marker-size:
int
name: | このトランスコーダに対する一次名。このエンコーディングを検索する際に使われます。 |
アクセサ public abstract CharEncoding.name:
String
アクセサ public abstract CharEncoding.transcode-max-expansion-factor:
int
アクセサ public abstract CharEncoding.transcode-min-expansion-factor:
int
public constant CharEncoding.ascii:
CharEncoding ={SingleByteCharEncoding "ascii", null, 0x7F}
public constant CharEncoding.iso-latin-1:
CharEncoding ={SingleByteCharEncoding "iso-latin-1", null, 0xFF}
public constant CharEncoding.none-specified:
CharEncoding ={new NoneCharEncoding}
public constant CharEncoding.ucs2-big-endian:
CharEncoding ={UTF16CharEncoding
"ucs2-big-endian", ||""
{StringArray efficient-size = 1, "utf16-big-endian"}, ||""
false
}
public constant CharEncoding.ucs2-little-endian:
CharEncoding ={UTF16CharEncoding
"ucs2-little-endian", ||""
{StringArray efficient-size = 1, "utf16-little-endian"}, ||""
true
}
public constant CharEncoding.ucs2-unknown-endian:
CharEncoding ={UTF16UnknownEndianCharEncoding}
public constant CharEncoding.utf8:
CharEncoding ={UTF8CharEncoding "utf8", write-byte-marker? = false}
public constant CharEncoding.windows-latin-1:
CharEncoding ={MappedSingleByteCharEncoding
"windows-latin-1", null, windows-latin-1-reverse-map ||""
}
public abstract | {CharEncoding.all-chars-in-encoding?}:bool |
public abstract | {CharEncoding.check-byte-marker}:(matches?:bool, bytes-consumed:int) |
public abstract | {CharEncoding.concat-byte-marker}:int |
public abstract | {CharEncoding.decode-characters}:(in-used:int, out-made:int) |
public abstract | {CharEncoding.encode-characters}:(in-used:int, out-made:int) |
(ファクトリ)
該当する名前の CharEncoding を返します。
name: エンコーディングの名前。
説明
(アクセサ)
アクセサ public abstract CharEncoding.aliases:#{
Array-of String}
このトランスコーダに対する別名。このエンコーディングを検索する際にも使用できます。
オーバーライド
非抽象サブクラスにおいては、null だけを返す場合でも、必ずこの別名を指定する必要があります。
(アクセサ)
アクセサ public CharEncoding.display-name:
String このトランスコーダーのユーザーが識別できるような名前で、ドロップダウン リストなどで使われます。
(アクセサ)
アクセサ public abstract CharEncoding.max-byte-marker-size:
int CharEncoding.check-byte-marker がこの CharEncoding に対して何かを実行できるかどうかを調べるための最大バイト数。
注意事項
この CharEncoding がバイト マーカーを実行しない場合、0 になります。
オーバーライド
非抽象クラスは、必ずこのアクセッサを実装する必要があります。
(アクセサ)
アクセサ deprecated public CharEncoding.min-byte-marker-size:
int
(アクセサ)
アクセサ public abstract CharEncoding.name:
String このトランスコーダに対する一次名。このエンコーディングを検索する際に使われます。
オーバーライド
非抽象サブクラスは、これを提供する必要があります。
(アクセサ)
アクセサ public abstract CharEncoding.transcode-max-expansion-factor:
int この文字エンコーディングにおいて文字をエンコードするために必要なバイト数の上限。
オーバーライド
非抽象サブクラスは、これを提供する必要があります。
(アクセサ)
アクセサ public abstract CharEncoding.transcode-min-expansion-factor:
int この文字エンコーディングにおいて文字をエンコードするために必要なバイト数の下限。
オーバーライド
非抽象サブクラスは、これを提供する必要があります。
(クラス定数)
public constant CharEncoding.ascii:
CharEncoding ={SingleByteCharEncoding "ascii", null, 0x7F}
(クラス定数)
public constant CharEncoding.iso-latin-1:
CharEncoding ={SingleByteCharEncoding "iso-latin-1", null, 0xFF}
(クラス定数)
public constant CharEncoding.none-specified:
CharEncoding ={new NoneCharEncoding}
(クラス定数)
public constant CharEncoding.ucs2-big-endian:
CharEncoding ={UTF16CharEncoding
"ucs2-big-endian", ||""
{StringArray efficient-size = 1, "utf16-big-endian"}, ||""
false
}
(クラス定数)
public constant CharEncoding.ucs2-little-endian:
CharEncoding ={UTF16CharEncoding
"ucs2-little-endian", ||""
{StringArray efficient-size = 1, "utf16-little-endian"}, ||""
true
}
(クラス定数)
public constant CharEncoding.ucs2-unknown-endian:
CharEncoding ={UTF16UnknownEndianCharEncoding}
(クラス定数)
public constant CharEncoding.utf8:
CharEncoding ={UTF8CharEncoding "utf8", write-byte-marker? = false}
(クラス定数)
public constant CharEncoding.windows-latin-1:
CharEncoding ={MappedSingleByteCharEncoding
"windows-latin-1", null, windows-latin-1-reverse-map ||""
}
(クラスプロシージャ)
指定された Locale を使用するユーザーがドキュメントで使用していると考えられるエンコーディング、ローカル OS の既定エンコーディングを最もよく表す CharEncoding を取得します。
戻り値
(メソッド)
public abstract | {CharEncoding.all-chars-in-encoding?}:bool |
バッファ内のすべての文字が文字エンコーディング メソッドに必要な文字セットの中に含まれているかどうかを判断します。
buf: 検査対象の文字を格納します。
start: 検査対象となる最初の文字のインデックス。指定しない場合、既定値は配列の先頭です。
end: 検査対象の最後の文字のインデックスの次のインデックス。指定しない場合、既定値は配列の現在の末尾 (buf.size) です。
戻り値
すべての文字がその文字セット内に存在する場合は true、文字セット内に存在しない文字がある場合は false になります。
(メソッド)
public abstract | {CharEncoding.check-byte-marker}:(matches?:bool, bytes-consumed:int) |
この CharEncoding のバイト マーカーがデータの先頭にあるかどうかを示します。
data: ファイル、またはエンコードされた文字列データの開始からのバイト。
length: data の中のバイト数。ポジション 0 からのバイトが正当です。
戻り値
この CharEncoding 自体のバイト マーカーがあるかどうかを示す bool、および data 内にある、消費されていて文字データと見なされないバイト数。
注意事項
注意事項
このメソッドは通常、バイト データのエンコーディングを自動的に判断しようとするコードによって呼び出されます。従ってこのメソッドは、一致するデータを返すまでの間、すべての登録済み
CharEncoding に対して
transcode-determine-character-encoding として呼び出されます。あるいは、データが特定の
CharEncoding に対するものであり、かつ、スキップすべきバイト マーカーが存在するかどうかを検査する必要がある場合、このメソッドが呼び出されます。
オーバーライド
非抽象クラスは、このメソッドを実装する必要があります。エンコーディングの中でバイト マーカーが設定されていない場合、false, 0 を返すメソッドを 1 つだけ実装します。
(メソッド)
public abstract | {CharEncoding.concat-byte-marker}:int |
このエンコーディングに適したバイト マーカーを形成するバイトを ByteVec に追加します。
bytes: バイト マーカーの追加先となる
ByteVec。データは
start の位置から上書きまたは追加されます。
start: バイト マーカーを連結する開始インデックス。
戻り値
バイトに追加されるバイト数。
オーバーライド
非抽象クラスは、このメソッドを実装する必要があります。エンコーディングがバイト マーカーを持たない場合、0 を返すメソッドを 1 つだけ実装します。
(メソッド)
public abstract | {CharEncoding.decode-characters}:(in-used:int, out-made:int) |
char の配列を byte の配列に変換します。
プログラミング注意事項
char の配列をエンコードのために
in に渡し、
out から
byte の配列を受け取ります。
戻り値
入力配列からデコードされたバイトの数、および、デコードされた文字の数。
注意事項
最初の戻り値が予想に反してゼロであった場合は、1 文字を丸ごとデコードするだけのバイト数を in から入手できるか確認してください。さらに、out に少なくとも 1 文字分のスペースがあるか確認してください。
注意事項
オーバーライド
非抽象クラスは、必ずこのアクセッサを実装する必要があります。
in: デコードするバイト列が格納される配列。この配列が空の場合、バイト列はデコードされません。
out: デコードされた文字が格納される配列。この配列がすべてデータで埋まっている場合、バイト列はデコードされません。
in-start: 入力配列内からデコードされる先頭バイトのインデックス。指定しない場合、既定値は配列の先頭です。
in-end: 入力配列内におけるデコード対象の末尾バイトのインデックスの直後のインデックス。指定しない場合、既定値は配列の現在の末尾 (in.size) です。
out-start: 出力配列内において、デコードされた文字が格納される先頭文字の位置のインデックス。指定しない場合、既定値は配列の現在の末尾 (out.size) です。
out-end: 出力配列内において、デコードされた文字が格納される末尾文字の位置の直後のインデックス。指定しない場合、既定値は出力配列の拡張位置の上限 (out.max-size) です。
always-resize-out?: 出力データのサイズが out の現在のサイズよりも小さい場合に、out のサイズを変更するかどうかを示します。
注意事項
(メソッド)
public abstract | {CharEncoding.encode-characters}:(in-used:int, out-made:int) |
char の配列を byte の配列に変換します。
プログラミング注意事項
char の配列をエンコードのために
in に渡し、
out から
byte の配列を受け取ります。
戻り値
入力配列にあるエンコード元の文字の数、および、出力されたバイトの数。
注意事項
最初の戻り値が予想に反してゼロであった場合は、1 文字を丸ごとデコードするだけのバイト数を in から入手できるか確認してください。さらに、out に少なくとも 1 文字分のスペースがあるか確認してください。
注意事項
in: エンコード元の文字が格納される配列。この配列が空の場合、文字はエンコードされません。
out: バイトが格納される配列。この配列がすべてデータで埋まっている場合、バイトは付加されません。
注意事項
in-start: 入力配列内におけるエンコード対象の先頭文字のインデックス。指定しない場合、既定値は配列の先頭です。
in-end: 入力配列内におけるエンコード対象の末尾文字の直後のインデックス。指定しない場合、既定値は配列の現在の末尾 (in.size) です。
out-start: 出力配列内における、エンコードされたバイト列が格納される先頭バイトのインデックス。指定しない場合、既定値は配列の現在の末尾 (out.size) です。
out-end: 出力配列内において、エンコードされたバイトが格納される末尾バイトの直後のインデックス。指定しない場合、既定値は出力配列を拡張できる上限の位置 (out.max-size) です。
always-resize-out?: 出力データのサイズが out の現在のサイズよりも小さい場合に、out のサイズを変更するかどうかを示します。
注意事項