www.digitalmars.com Home | Search | D | Comments
Last update Sat Mar 18 23:51:29 2006
D
Language
Phobos
Comparisons


object

std
 std.base64
 std.boxer
 std.compiler
 std.conv
 std.cover
 std.ctype
 std.date
 std.demangle
 std.file
 std.format
 std.gc
 std.intrinsic
 std.math
 std.md5
 std.mmfile
 std.openrj
 std.outbuffer
 std.path
 std.process
 std.random
 std.recls
 std.regexp
 std.socket
 std.socketstream
 std.stdint
 std.stdio
 std.cstream
 std.stream
 std.string
 std.system
 std.thread
 std.uri
 std.utf
 std.zip
 std.zlib
 std.c.fenv
 std.c.math
 std.c.process
 std.c.stdarg
 std.c.stddef
 std.c.stdio
 std.c.stdlib
 std.c.string
 std.c.time
 std.c.wcharh
 std.windows.charset

std.windows

std.linux

std.c.windows

std.c.linux

std.utf

Encode and decode UTF-8, UTF-16 and UTF-32 strings.

For Win32 systems, the C wchar_t type is UTF-16 and corresponds to the D wchar type. For linux systems, the C wchar_t type is UTF-32 and corresponds to the D utf.dchar type.

UTF character support is restricted to (\u0000 <= character <= \U0010FFFF).

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;
Exception class that is thrown upon any errors.

uint idx;
index in string of where error occurred

bool isValidDchar(dchar c);
Test if c is a valid UTF-32 character.

\uFFFE and \uFFFF are considered valid by this function, as they are permitted for internal use by an application, but they are not allowed for interchange by the Unicode standard.

Returns:
true if it is, false if not.

uint stride(char[] s, uint i);
stride() returns the length of a UTF-8 sequence starting at index i in string s.

Returns:
The number of bytes in the UTF-8 sequence or 0xFF meaning s[i] is not the start of of UTF-8 sequence.

uint stride(wchar[] s, uint i);
stride() returns the length of a UTF-16 sequence starting at index i in string s.

uint stride(dchar[] s, uint i);
stride() returns the length of a UTF-32 sequence starting at index i in string s.

Returns:
The return value will always be 1.

uint toUCSindex(char[] s, uint i);
uint toUCSindex(wchar[] s, uint i);
uint toUCSindex(dchar[] s, uint i);
Given an index i into an array of characters s[], and assuming that index i is at the start of a UTF character, determine the number of UCS characters up to that index i.

uint toUTFindex(char[] s, uint n);
uint toUTFindex(wchar[] s, uint n);
uint toUTFindex(dchar[] s, uint n);
Given a UCS index n into an array of characters s[], return the UTF index.

dchar decode(char[] s, inout uint idx);
dchar decode(wchar[] s, inout uint idx);
dchar decode(dchar[] s, inout uint idx);
Decodes and returns character starting at s[idx]. idx is advanced past the decoded character. If the character is not well formed, a UtfException is thrown and idx remains unchanged.

void encode(inout char[] s, dchar c);
void encode(inout wchar[] s, dchar c);
void encode(inout dchar[] s, dchar c);
Encodes character c and appends it to array s[].

void validate(char[] s);
void validate(wchar[] s);
void validate(dchar[] s);
Checks to see if string is well formed or not. Throws a UtfException if it is not. Use to check all untrusted input for correctness.

char[] toUTF8(char[] s);
char[] toUTF8(wchar[] s);
char[] toUTF8(dchar[] s);
Encodes string s into UTF-8 and returns the encoded string.

wchar[] toUTF16(char[] s);
wchar* toUTF16z(char[] s);
wchar[] toUTF16(wchar[] s);
wchar[] toUTF16(dchar[] s);
Encodes string s into UTF-16 and returns the encoded string. toUTF16z() is suitable for calling the 'W' functions in the Win32 API that take an LPWSTR or LPCWSTR argument.

dchar[] toUTF32(char[] s);
dchar[] toUTF32(wchar[] s);
dchar[] toUTF32(dchar[] s);
Encodes string s into UTF-32 and returns the encoded string.