英語版
このページの英語版を見る

std.encoding

様々なエンコーディング間のトランスコードと処理のためのクラスと関数。
コンパイル時にエンコーディングが既知の場合、以下の関数が提供される。 文字の任意のエンコードとデコード、異なる型の文字列間の任意のトランスコード のための関数が提供される。
現在サポートされているエンコーディングは、UTF-8, UTF-16, UTF-32, ASCII, ISO-8859-1 (LATIN-1としても知られている)、ISO-8859-2(LATIN-2)、WINDOWS-1250、WINDOWS-1251 およびWINDOWS-1252である。
エンコーディングがコンパイル時にはわからないが、実行時にはわかる場合 の場合、抽象クラス EncodingScheme とそのサブクラスが提供される。 ランタイム・エンコーダー/デコーダーを構築する、 を実行する。
auto e = EncodingScheme.create("utf-8");
このライブラリは EncodingSchemeのサブクラスを提供する、 ISO-8859-1(LATIN-1としても知られている)、ISO-8859-2(LATIN-2)、WINDOWS-1250、 WINDOWS-1250、WINDOWS-1251、WINDOWS-1252、UTF-8、(リトルエンディアンアーキテクチャでは) UTF-16LEおよびUTF-32LE、または(ビッグエンディアンアーキテクチャでは)UTF-16BEおよびUTF-32BE。
このライブラリは、他のモジュールが他のエンコーディングのサブクラスを追加できる仕組みを提供する。 EncodingSchemeサブクラスを追加できる仕組みを提供する。
Authors:
Janice Caron

ソース std/encoding.d

enum dchar INVALID_SEQUENCE;
が返す特別な値。safeDecode
enum AsciiChar: ubyte;

alias AsciiString = immutable(AsciiChar)[];
様々な文字セットを定義する。
enum Latin1Char: ubyte;
Latin1 エンコード文字を定義する。
alias Latin1String = immutable(Latin1Char)[];
Latin1 エンコード文字列を定義する(immutable(Latin1Char) の配列として)。
enum Latin2Char: ubyte;
Latin2 エンコード文字を定義する。
alias Latin2String = immutable(Latin2Char)[];
Latin2 エンコード文字列を( immutable(Latin2Char) の配列として)定義する。
enum Windows1250Char: ubyte;
Windows1250 エンコード文字を定義する。
alias Windows1250String = immutable(Windows1250Char)[];
Windows1250 エンコード文字列を定義する ( immutable(Windows1250Char) の配列として)。
enum Windows1251Char: ubyte;
Windows1251 エンコード文字を定義する。
alias Windows1251String = immutable(Windows1251Char)[];
Windows1251 エンコード文字列を定義する ( immutable(Windows1251Char) の配列として)。
enum Windows1252Char: ubyte;
Windows1252 エンコード文字を定義する。
alias Windows1252String = immutable(Windows1252Char)[];
Windows1252 エンコード文字列を定義する ( immutable(Windows1252Char) の配列として)。
pure nothrow @nogc @safe bool isValidCodePoint(dchar c);
c が有効なコードポイントであれば true を返す。
これには、文字以外のコードポイント U+FFFE と U+FFFF が含まれることに注釈: 、 これらは有効なコードポイントであることに注意。 も有効なコードポイントだからである。)

優先される この関数はstd.utf.startsValidDchar() に取って代わるものである。

Standards:
Unicode5.0、ASCII、ISO-8859-1、ISO-8859-2、WINDOWS-1250、 Windows-1251、Windows-1252
Parameters:
dchar c テストするコードポイント
@property string encodingName(T)();
エンコーディング名を返す。
エンコーディングの型は推測できない。したがって エンコーディングの型を明示的に指定する必要がある。
Standards:
Unicode5.0、ASCII、ISO-8859-1、ISO-8859-2、WINDOWS-1250、 Windows-1251、Windows-1252
Examples:
writeln(encodingName!(char)); // "UTF-8"
writeln(encodingName!(wchar)); // "UTF-16"
writeln(encodingName!(dchar)); // "UTF-32"
writeln(encodingName!(AsciiChar)); // "ASCII"
writeln(encodingName!(Latin1Char)); // "ISO-8859-1"
writeln(encodingName!(Latin2Char)); // "ISO-8859-2"
writeln(encodingName!(Windows1250Char)); // "windows-1250"
writeln(encodingName!(Windows1251Char)); // "windows-1251"
writeln(encodingName!(Windows1252Char)); // "windows-1252"
bool canEncode(E)(dchar c);
指定されたコードポイントをエンコードで表現できる場合に真を返す。 を表現できる場合は真を返す。
エンコーディングの型は推測できない。したがって エンコーディングの型を明示的に指定する必要がある。
Standards:
Unicode5.0、ASCII、ISO-8859-1、ISO-8859-2、WINDOWS-1250、 Windows-1251、Windows-1252
Examples:
assert( canEncode!(Latin1Char)('A'));
assert( canEncode!(Latin2Char)('A'));
assert(!canEncode!(AsciiChar)('\u00A0'));
assert( canEncode!(Latin1Char)('\u00A0'));
assert( canEncode!(Latin2Char)('\u00A0'));
assert( canEncode!(Windows1250Char)('\u20AC'));
assert(!canEncode!(Windows1250Char)('\u20AD'));
assert(!canEncode!(Windows1250Char)('\uFFFD'));
assert( canEncode!(Windows1251Char)('\u0402'));
assert(!canEncode!(Windows1251Char)('\u20AD'));
assert(!canEncode!(Windows1251Char)('\uFFFD'));
assert( canEncode!(Windows1252Char)('\u20AC'));
assert(!canEncode!(Windows1252Char)('\u20AD'));
assert(!canEncode!(Windows1252Char)('\uFFFD'));
assert(!canEncode!(char)(cast(dchar) 0x110000));
Examples:
文字列全体をチェックする方法
import std.algorithm.searching : find;
import std.utf : byDchar;

assert("The quick brown fox"
    .byDchar
    .find!(x => !canEncode!AsciiChar(x))
    .empty);
bool isValidCodeUnit(E)(E c);
コード・ユニットが合法であれば真を返す。例えば、バイト0x80はASCIIでは合法ではない。 はASCIIでは合法ではない。 0x00から0x7Fの範囲でなければならないからである。
Standards:
Unicode 5.0、ASCII、ISO-8859-1、ISO-8859-2、WINDOWS-1250、 Windows-1251、Windows-1252
Parameters:
E c テストするコードユニット
Examples:
assert(!isValidCodeUnit(cast(char) 0xC0));
assert(!isValidCodeUnit(cast(char) 0xFF));
assert( isValidCodeUnit(cast(wchar) 0xD800));
assert(!isValidCodeUnit(cast(dchar) 0xD800));
assert(!isValidCodeUnit(cast(AsciiChar) 0xA0));
assert( isValidCodeUnit(cast(Windows1250Char) 0x80));
assert(!isValidCodeUnit(cast(Windows1250Char) 0x81));
assert( isValidCodeUnit(cast(Windows1251Char) 0x80));
assert(!isValidCodeUnit(cast(Windows1251Char) 0x98));
assert( isValidCodeUnit(cast(Windows1252Char) 0x80));
assert(!isValidCodeUnit(cast(Windows1252Char) 0x81));
bool isValid(E)(const(E)[] s);
文字列が正しくエンコードされていれば真を返す

補足 この関数はstd.utf.validate()に取って代わるものである。 関数は入力が有効かどうかを示すブールを返す、 一方、古い関数は例外をスローする。

Standards:
Unicode5.0、ASCII、ISO-8859-1、ISO-8859-2、WINDOWS-1250、 Windows-1251、Windows-1252
Parameters:
const(E)[] s テストする文字列
Examples:
assert( isValid("\u20AC100"));
assert(!isValid(cast(char[3])[167, 133, 175]));
size_t validLength(E)(const(E)[] s);
最初のコード・ユニットから始まる、可能な限り長い部分文字列の長さを返す。 から始まり、エンコードされている最長の部分文字列の長さを返す。
Standards:
Unicode 5.0、ASCII、ISO-8859-1、ISO-8859-2、WINDOWS-1250、 Windows-1251、Windows-1252
Parameters:
const(E)[] s テストする文字列
immutable(E)[] sanitize(E)(immutable(E)[] s);
不正なコード・ユニット・シーケンスを有効なコード・ユニット・シーケンスに置き換えることで、文字列をサニタイズする。 に置き換える。結果は、このエンコーディングに対して有効であることが保証される。
入力文字列がすでに有効な場合、この関数は元の文字列を返す、 そうでない場合は、不正なコード単位列をすべてエンコーディングの置換コード単位列に置き換えることで新しい文字列を作成する。 無効なシーケンスはUnicodeの置換文字で置換される。 無効なシーケンスは、Unicodeの置換文字(U+FFFD)で置き換えられる。 に置き換えられる。 に置き換えられる。
Standards:
Unicode5.0、ASCII、ISO-8859-1、ISO-8859-2、WINDOWS-1250、 Windows-1251、Windows-1252
Parameters:
immutable(E)[] s サニタイズされる文字列
Examples:
writeln(sanitize("hello \xF0\x80world")); // "hello \xEF\xBF\xBDworld"
size_t firstSequence(E)(const(E)[] s);
最初にエンコードされた配列の長さを返す。
この関数への入力は正しくエンコードされなければならない。 これは関数の契約によって強制される。
Standards:
Unicode5.0、ASCII、ISO-8859-1、ISO-8859-2、WINDOWS-1250、 Windows-1251、Windows-1252
Parameters:
const(E)[] s スライスされる文字列
Examples:
writeln(firstSequence("\u20AC1000")); // "\u20AC".length
writeln(firstSequence("hel")); // "h".length
size_t lastSequence(E)(const(E)[] s);
最後にエンコードされた配列の長さを返す。
この関数への入力は正しくエンコードされなければならない(MUST)。 これは関数の契約によって強制される。
Standards:
Unicode5.0、ASCII、ISO-8859-1、ISO-8859-2、WINDOWS-1250、 Windows-1251、Windows-1252
Parameters:
const(E)[] s スライスされる文字列
Examples:
writeln(lastSequence("1000\u20AC")); // "\u20AC".length
writeln(lastSequence("hellö")); // "ö".length
ptrdiff_t index(E)(const(E)[] s, int n);
(n+1)番目のコードポイントが始まる配列のインデックスを返す。
この関数への入力は正しくエンコードされなければならない。 これは関数の契約によって強制される。

優先される この関数はstd.utf.toUTFindex()に取って代わるものである。

Standards:
Unicode5.0、ASCII、ISO-8859-1、ISO-8859-2、WINDOWS-1250、 Windows-1251、Windows-1252
Parameters:
const(E)[] s カウントされる文字列
int n 現在のコードポイントインデックス
Examples:
writeln(index("\u20AC100", 1)); // 3
writeln(index("hällo", 2)); // 3
dchar decode(S)(ref S s);
1つのコードポイントをデコードする。
この関数は、文字列の先頭から1つ以上のコードユニットを取り除く、 これらのコードユニットが表すデコードされたコードポイントを返す。
この関数への入力は有効に符号化されなければならない(MUST)。 これは関数の契約によって強制される。

補足 この関数はstd.utf.decode()に取って代わるものである。 関数 codePoints() の方がより便利であることに注意されたい。

Standards:
Unicode 5.0、ASCII、ISO-8859-1、ISO-8859-2、WINDOWS-1250、 Windows-1251、Windows-1252
Parameters:
S s 最初のコードポイントをデコードする文字列
dchar decodeReverse(E)(ref const(E)[] s);
文字列の末尾から1つのコードポイントをデコードする。
この関数は、文字列の末尾から1つ以上のコードユニットを取り除く、 そして、それらのコードユニットが表すデコードされたコードポイントを返す。
この関数への入力は、正しく符号化されていなければならない(MUST)。 これは関数の契約によって強制される。
Standards:
Unicode5.0、ASCII、ISO-8859-1、ISO-8859-2、WINDOWS-1250、 Windows-1251、Windows-1252
Parameters:
const(E)[] s 最初のコードポイントをデコードする文字列
dchar safeDecode(S)(ref S s);
1つのコードポイントをデコードする。入力が有効である必要はない。
この関数は、文字列の先頭から1つ以上のコードユニットを取り除く、 これらのコードユニットが表すデコードされたコードポイントを返す。
この関数は、無効な符号化文字列を入力として受け付ける。 文字列の先頭に無効なシーケンスが見つかった場合、この 関数はそれを取り除き、値 INVALID_SEQUENCE を返す。
Standards:
Unicode5.0、ASCII、ISO-8859-1、ISO-8859-2、WINDOWS-1250、 Windows-1251、Windows-1252
Parameters:
S s 最初のコードポイントをデコードする文字列
size_t encodedLength(E)(dchar c);
1つの符号点を符号化するのに必要な符号単位の数を返す。
この関数への入力は、有効なコードポイントでなければならない(MUST)。 これは関数の契約によって強制される。
出力の型は推論できない。したがって エンコーディングをテンプレート・パラメータとして明示的に指定する必要がある。
Standards:
Unicode 5.0、ASCII、ISO-8859-1、ISO-8859-2、WINDOWS-1250、 Windows-1251、Windows-1252
Parameters:
dchar c エンコードするコードポイント
E[] encode(E)(dchar c);
1つのコードポイントをエンコードする。
この関数は、1つのコードポイントを1つ以上のコードユニットにエンコードする。 これらのコードユニットを含む文字列を返す。
この関数への入力は、有効なコードポイントでなければならない(MUST)。 これは関数の契約によって強制される。
出力の型は推論できない。したがって エンコーディングをテンプレート・パラメータとして明示的に指定する必要がある。

補足 この関数はstd.utf.encode()に取って代わるものである。 codeUnits()関数の方がより便利である。

Standards:
Unicode 5.0、ASCII、ISO-8859-1、ISO-8859-2、WINDOWS-1250、 Windows-1251、Windows-1252
Parameters:
dchar c エンコードするコードポイント
size_t encode(E)(dchar c, E[] array);
1つのコードポイントを配列にエンコードする。
この関数は、1つのコードポイントを1つ以上のコードユニットにエンコードする。 コード・ユニットは、ユーザーが提供する固定サイズの配列に格納される、 参照渡しでなければならない。
この関数への入力は、有効なコードポイントでなければならない(MUST)。 これは関数の契約によって強制される。
出力の型は推論できない。したがって エンコーディングをテンプレート・パラメータとして明示的に指定する必要がある。

補足 この関数はstd.utf.encode()に取って代わるものである。 codeUnits()関数の方がより便利である。

Standards:
Unicode 5.0、ASCII、ISO-8859-1、ISO-8859-2、WINDOWS-1250、 Windows-1251、Windows-1252
Parameters:
dchar c エンコードするコードポイント
E[] array 符号化先の配列
Returns:
配列に書き込まれるコードユニットの数
void encode(E)(dchar c, void delegate(E) dg);
1つのコードポイントをデリゲートにエンコードする。
この関数は、1つのコードポイントを1つ以上のコードユニットにエンコードする。 コードユニットは、指定されたデリゲートに一度に1つずつ渡される。
この関数への入力は、有効なコードポイントでなければならない(MUST)。 これは関数の契約によって強制される。
出力の型は推論できない。したがって エンコーディングをテンプレート・パラメータとして明示的に指定する必要がある。

補足 この関数はstd.utf.encode()に取って代わるものである。 codeUnits()関数の方がより便利である。

Standards:
Unicode 5.0、ASCII、ISO-8859-1、ISO-8859-2、WINDOWS-1250、 Windows-1251、Windows-1252
Parameters:
dchar c エンコードするコードポイント
void delegate(E) dg 各コードユニットに対して呼び出されるデリゲート
size_t encode(Tgt, Src, R)(in Src[] s, R range);
の内容をエンコードする。 sの内容をTgt 型の単位でエンコードする。 出力範囲に結果を書き出す。
Returns:
書き込まれたTgt 要素の数。
Parameters:
Tgt の要素型。 range.
Src[] s 入力配列。
R range 出力範囲。
CodePoints!E codePoints(E)(immutable(E)[] s);
文字列内のすべてのコードポイントを双方向に反復処理できるforeach可能な構造体を返す。 を双方向に反復できる foreachable 構造体を返す。
この関数への入力は正しくエンコードされなければならない。 これは関数の契約によって強制される。
foreachは を指定することができる。インデックスが指定された場合、それは各反復で初期化される。 が初期化される。 が始まる文字列のオフセットで初期化される。

補足 この関数はstd.utf.decode()に取って代わるものである。

Standards:
Unicode5.0、ASCII、ISO-8859-1、ISO-8859-2、WINDOWS-1250、 Windows-1251、Windows-1252
Parameters:
immutable(E)[] s デコードされる文字列

例:

string s = "hello world";
foreach (c;codePoints(s))
{
    // cで何かをする(これは常にdcharになる)
}
現在のところ、foreach (c:codePoints(s))はforeach (c;s)よりも優れている。 の方が優れていることに注意されたい。

Examples:
string s = "hello";
string t;
foreach (c;codePoints(s))
{
    t ~= cast(char) c;
}
writeln(s); // t
CodeUnits!E codeUnits(E)(dchar c);
コードポイント内のすべてのコードユニットを双方向に反復処理できるforeach可能な構造体を返す。 を双方向に反復できる foreachable 構造体を返す。
この関数の入力は、有効なコードポイントでなければならない(MUST)。 これは関数の契約によって強制される。
出力の型は推論できない。したがって を明示的に指定する必要がある。

補足 この関数はstd.utf.encode()に取って代わるものである。

Standards:
Unicode5.0、ASCII、ISO-8859-1、ISO-8859-2、WINDOWS-1250、 Windows-1251、Windows-1252
Parameters:
dchar c エンコードするコードポイント
Examples:
char[] a;
foreach (c;codeUnits!(char)(cast(dchar)'\u20AC'))
{
    a ~= c;
}
writeln(a.length); // 3
writeln(a[0]); // 0xE2
writeln(a[1]); // 0x82
writeln(a[2]); // 0xAC
void transcode(Src, Dst)(Src[] s, out Dst[] r);
文字列をあるエンコーディングから別のエンコーディングに変換する。

補足 この関数は、std.utf.toUTF8()、std.utf.toUTF16() および および std.utf.toUTF32() (しかし、to!"の方がより便利であることに注意)。

Standards:
Unicode5.0、ASCII、ISO-8859-1、ISO-8859-2、WINDOWS-1250、 Windows-1251、Windows-1252
Parameters:
Src[] s ソース文字列。有効なエンコードでなければならない。 これは関数の契約によって強制される。
Dst[] r デスティネーション文字列
See Also:
Examples:
wstring ws;
// UTF-8からUTF-16にトランスコードする
transcode("hello world",ws);
writeln(ws); // "hello world"w

Latin1String ls;
// UTF-16からISO-8859-1へのトランスコード
transcode(ws, ls);
writeln(ls); // "hello world"
class EncodingException: object.Exception;
このモジュールがスローする例外の基底クラス
abstract class EncodingScheme;
すべてのエンコーディングスキームの抽象基底クラス
void register(Klass : EncodingScheme)();
EncodingSchemeのサブクラスを登録する。
この関数により、EncodingSchemeのユーザ定義のサブクラスを他のモジュールで宣言することができる。 を他のモジュールで宣言できるようにする。
Parameters:
Klass 登録するEncodingSchemeのサブクラス。

例:

class Amiga1251 : EncodingScheme
{
    shared static this()
    {
        EncodingScheme.register!Amiga1251;
    }
}

static EncodingScheme create(string encodingName);
EncodingSchemeのサブクラスを取得する。 のサブクラスを取得する。
この関数は、register()関数で登録されたEncodingSchemeのみを認識する。 のみを認識する。

例:

auto scheme = EncodingScheme.create("Amiga-1251");

abstract const string toString();
エンコーディングスキームの標準名を返す
abstract const string[] names();
このエンコーディングスキームの既知の名前をすべて配列で返す
abstract const bool canEncode(dchar c);
文字 c がこのエンコーディング方式で表現できる場合は true を返す を返す。
abstract const size_t encodedLength(dchar c);
このコードポイントのエンコードに必要なubyte数を返す。
この関数への入力は有効なコードポイントでなければならない。
Parameters:
dchar c エンコードされるコードポイント
Returns:
必要なubyte数。
abstract const size_t encode(dchar c, ubyte[] buffer);
1つのコードポイントを、ユーザーが提供する固定サイズのバッファにエンコードする。
この関数は、1つのコードポイントを1つ以上のubyteにエンコードする。 提供されるバッファはコード単位にアラインされていなければならない。 (例: UTF-16LE または UTF-16BE は "wchar" アラインでなければならない、 UTF-32LE または UTF-32BE は dchar アラインでなければならない。)
この関数への入力は有効なコードポイントでなければならない(MUST)。
Parameters:
dchar c エンコードされるコードポイント
ubyte[] buffer 出力配列
Returns:
書き込まれたubyte数。
abstract const dchar decode(ref const(ubyte)[] s);
1つのコードポイントをデコードする。
この関数は、配列の先頭から1つ以上のubyteを取り除く、 そのubyteが表すデコードされたコードポイントを返す。
この関数への入力は正しく符号化されていなければならない。
Parameters:
const(ubyte)[] s 最初のコードポイントをデコードする配列
abstract const dchar safeDecode(ref const(ubyte)[] s);
1つの符号点を復号する。入力は有効である必要はない。
この関数は、配列の先頭から1つ以上のubyteを取り除く、 そのubyteが表すデコードされたコードポイントを返す。
この関数は、入力として無効な符号化配列を受け付ける。 文字列の先頭に無効なシーケンスが見つかった場合、この 関数はそれを取り除き、値 INVALID_SEQUENCE を返す。
Parameters:
const(ubyte)[] s 最初のコードポイントをデコードする配列
abstract const @property immutable(ubyte)[] replacementSequence();
エンコード方式で表現できない文字を表現するために使用される "ubyte"のシーケンスを返す。 ubyteのシーケンスを返す。
通常は、U+FFFDや'? や '?' のような置換文字の表現となる。
bool isValid(const(ubyte)[] s);
配列が正しくエンコードされていれば真を返す
Parameters:
const(ubyte)[] s テスト対象の配列
size_t validLength()(const(ubyte)[] s);
から始まる部分文字列のうち、最も長いものの長さを返す。 エンコードされた最初の要素から始まる、可能な限り長い部分文字列の長さを返す。
Parameters:
const(ubyte)[] s テスト対象の配列
immutable(ubyte)[] sanitize()(immutable(ubyte)[] s);
不正なubyteシーケンスを有効なubyteシーケンスに置き換えることで、 配列をサニタイズする。 に置き換えることで配列をサニタイズする。その結果は、この エンコーディング方式では有効であることが保証される。
入力配列がすでに有効である場合、この関数は元の配列を返す。 そうでない場合は、すべての不正な配列を符号化スキームの置換配列に置き換えて新しい配列を構築する。 の配列を符号化スキームの置換配列に置き換えて新しい配列を構築する。
Parameters:
immutable(ubyte)[] s サニタイズされる文字列
size_t firstSequence()(const(ubyte)[] s);
最初にエンコードされたシーケンスの長さを返す。
この関数への入力は正しくエンコードされなければならない(MUST)。 これは関数の契約によって強制される。
Parameters:
const(ubyte)[] s スライスされる配列
size_t count()(const(ubyte)[] s);
ubyte配列にエンコードされたコードポイントの総数を返す。
この関数への入力は正しくエンコードされていなければならない。 これは関数の契約によって強制される。
Parameters:
const(ubyte)[] s カウントされる文字列
ptrdiff_t index()(const(ubyte)[] s, size_t n);
(n+1)番目のコードポイントが始まる配列インデックスを返す。
この関数への入力は正しくエンコードされなければならない(MUST)。 これは関数の契約によって強制される。
Parameters:
const(ubyte)[] s カウントされる文字列
size_t n 現在のコードポイントインデックス
class EncodingSchemeASCII: std.encoding.EncodingScheme;
ASCIIを扱うためのEncodingScheme
このスキームは以下の名前を認識する: "ansi_x3.4-1968"、 "ansi_x3.4-1986"である、 "ASCII"、 "IBM367"、 "ISO646-US"である、 "ISO_646.irv:1991"、 "US-ASCII"である、 "cp367"、 "csASCII" 「iso-ir-6"、 "us"
class EncodingSchemeLatin1: std.encoding.EncodingScheme;
Latin-1を扱うEncodingScheme
このスキームは以下の名前を認識する: "CP819"、 "IBM819"、 "ISO-8859-1"、 "ISO_8859-1"、 "ISO_8859-1:1987"である、 "csISOLatin1"、 「iso-ir-100 "である、 "l1", "latin1"
class EncodingSchemeLatin2: std.encoding.EncodingScheme;
Latin-2を扱うEncodingScheme
このスキームは以下の名前を認識する: "Latin 2"、 "ISO-8859-2"、 "ISO_8859-2"、 "ISO_8859-2:1999"である、 "Windows-28592"
class EncodingSchemeWindows1250: std.encoding.EncodingScheme;
Windows-1250を扱うEncodingScheme
このスキームは以下の名前を認識する: "windows-1250"
class EncodingSchemeWindows1251: std.encoding.EncodingScheme;
Windows-1251 を扱うためのエンコーディングスキーム。
このスキームは以下の名前を認識する: "windows-1251"
class EncodingSchemeWindows1252: std.encoding.EncodingScheme;
Windows-1252を扱うためのEncodingScheme
このスキームは以下の名前を認識する: "windows-1252"
class EncodingSchemeUtf8: std.encoding.EncodingScheme;
UTF-8 を扱うための EncodingScheme
このスキームは以下の名前を認識する: "UTF-8"
class EncodingSchemeUtf16Native: std.encoding.EncodingScheme;
UTF-16 をネイティブバイト順で扱うための EncodingScheme
このスキームは以下の名前を認識する: "UTF-16LE" (リトルエンディアン・アーキテクチャのみ) "UTF-16BE" (ビッグエンディアン・アーキテクチャのみ)
class EncodingSchemeUtf32Native: std.encoding.EncodingScheme;
ネイティブバイト順の UTF-32 を扱うための EncodingScheme
このスキームは以下の名前を認識する: "UTF-32LE" (リトルエンディアン・アーキテクチャのみ) "UTF-32BE" (ビッグエンディアン・アーキテクチャのみ)
enum BOM: int;
一般的なバイトオーダーマークの定義。 enum の要素は、bomTable のインデックスとして使用できる。 BOMSeq にマッチする。
none
BOMが見つからない
utf32be
[0x00、0x00、0xFE、0xFF]。
utf32le
[0xFF、0xFE、0x00、0x00]。
utf7
0xFF, 0xFE, 0x00, 0x00] [0x2B, 0x2F, 0x76, 0x38] である。 [0x2B, 0x2F, 0x76, 0x39]である、 [0x2B, 0x2F, 0x76, 0x2B]である、 [0x2B, 0x2F, 0x76, 0x2F]である、 [0x2B、0x2F、0x76、0x38、0x2D]
utf1
[0xF7, 0x64, 0x4C] とする。
utfebcdic
0xF7, 0x64, 0x4C] [0xDD, 0x73, 0x66, 0x73
scsu
0xFD, 0x73, 0x66, 0x73] [0x0E, 0xFE, 0xFF
bocu1
[0xFB, 0xEE, 0x28] とする。
gb18030
0xFB, 0xEE, 0x28] [0x84, 0x31, 0x95, 0x33] とする。
utf8
[0xEF, 0xBB, 0xBF] とする。
utf16be
0xFE, 0xFF] [0xFE, 0xFF
utf16le
[0xFF, 0xFE] である。
alias BOMSeq = std.typecons.Tuple!(BOM, "schema", ubyte[], "sequence").Tuple;
bomTable 内部に格納されている "型"。
immutable Tuple!(BOM, "schema", ubyte[], "sequence")[] bomTable;
へのバイト列のマッピングByte Order Mark (BOM)
immutable(BOMSeq) getBOM(Range)(Range input)
if (isForwardRange!Range && is(immutable(ElementType!Range) == immutable(ubyte)));
BOMSeq 与えられた input. BOM が存在しない場合は、BOM.none に対するBOMSeq が返される。 が返される。範囲の先頭にあるBOM のシーケンスは、渡された範囲から計算されない。 のシーケンスは、渡された範囲から計算されない。参照 "型"を渡す場合は、。 範囲を渡す場合は、save がディープコピーを作成することを確認する。
Parameters:
Range input をチェックするシーケンスはBOM
Returns:
BOMSeq 渡された input.
Examples:
import std.format : format;

auto ts = dchar(0x0000FEFF) ~ "Hello World"d;

auto entry = getBOM(cast(ubyte[]) ts);
version (BigEndian)
{
    writeln(entry.schema); // BOM.utf32be
}
else
{
    writeln(entry.schema); // BOM.utf32le
}
enum dchar utfBOM;
完全にデコードされたBOMを定義する定数