std.utf
UTF-8, UTF-16, UTF-32 文字列のエンコード・デコードを行います。Win32では、C の wchar_t 型は UTF-16 で、D の wchar 型に対応します。 Linuxでは、C の wchar_t 型は UTF-32 で、D の utf.dchar 型に対応します。
UTF文字としてサポートする範囲は (0 <= character <= 0x10FFFF) に制限されています。
See Also:
Wikipedia
http://www.cl.cam.ac.uk/~mgk25/unicode.html#utf-8
http://anubis.dkuug.dk/JTC1/SC2/WG2/docs/n1335
- class UtfException: object.Exception;
- このモジュールからの任意のエラーに対して投げられる例外です
- size_t idx;
- エラーの発生したインデックス
- bool isValidDchar(dchar c);
- c が有効な UTF-32 の文字かどうかをチェックします。
Unicode規格によればアプリケーション内部での使用は許されているため、 \uFFFE と \uFFFF はこの関数では有効と判定されます。 しかし、相互交換用データとしては不正な文字です。
Returns:
有効なら true、無効なら false
- size_t stride(char[] s, size_t i);
- stride() は、文字列 s の
インデックス i から始まる UTF-8 シーケンスの長さを返します。
Returns:
UTF-8 シーケンスの長さか、 s[i] がシーケンスの開始でない場合は 0xFF を返します
- size_t stride(in wchar[] s, size_t i);
- stride() は、文字列 s の
インデックス i から始まる UTF-16 シーケンスの長さを返します。
- size_t stride(in dchar[] s, size_t i);
- stride() は、文字列 s の
インデックス i から始まる UTF-32 シーケンスの長さを返します。
Returns:
返値は常に 1 です
- size_t toUCSindex(in char[] s, size_t i);
size_t toUCSindex(in wchar[] s, size_t i);
size_t toUCSindex(in dchar[] s, size_t i); - 文字配列 s[] へのインデックス i が与えられると、
i がUTFシーケンスの開始と仮定して、
そこまでのUCSでの文字数を返します。
- size_t toUTFindex(in char[] s, size_t n);
size_t toUTFindex(in wchar[] s, size_t n);
size_t toUTFindex(in dchar[] s, size_t n); - 文字配列 s[] へのUCS文字数インデックス n が与えられると、配列上でのインデックスを返します。
- dchar decode(in char[] s, ref size_t idx);
dchar decode(in wchar[] s, ref size_t idx);
dchar decode(in dchar[] s, ref size_t idx); - s[idx] から始まる文字をデコードして返します。.
idx はデコードされた文字の直後へと進みます。
入力文字が正当でなければ UtfException が投げられ、idx は変化しません。
- void encode(ref char[] s, dchar c);
void encode(ref wchar[] s, dchar c);
void encode(ref dchar[] s, dchar c); - 文字 c をエンコードし配列 s へ追加します。
- void validate(in char[] s);
void validate(in wchar[] s);
void validate(in dchar[] s); - 文字列が正当(well formed)であるかどうかをチェックします。正しくなかった場合
UtfException を投げます。全ての信頼のできない入力の正当性を確認するために使ってください。
- string toUTF8(string s);
string toUTF8(wchar[] s);
string toUTF8(dchar[] s); - 文字列 s を UTF-8 へエンコードし、結果の文字列を返します。
- wstring toUTF16(char[] s);
const(wchar*) toUTF16z(string s);
wstring toUTF16(wstring s);
wstring toUTF16(dchar[] s); - 文字列 s を UTF-16 へエンコードし、結果の文字列を返します。
toUTF16z は、LPWSTRやLPCWSTR型の引数を取るWin32 APIの 'W'
関数を呼び出すのに便利です。
- dstring toUTF32(char[] s);
dstring toUTF32(wchar[] s);
dstring toUTF32(dstring s); - 文字列 s を UTF-32 へエンコードし、結果の文字列を返します。