immutable dstring asciiTable = iota!dchar('\x00', '\x80').array

American Standard Code for Information Interchange, 128 bit encoding

AsciiBasedString encodeFromUTF32(AsciiBasedString)(dstring s, bool safe = false) 
if(is(AsciiBasedString == KOI8RString) || is(AsciiBasedString == KOI8UString))

Gets encoded Amalthea ASCII based string from dstring (UTF-32).

Parameters

s

The UTF32-string for transcoding.

safe

If false, the input has to be valid to avoid mistakes, if true, inappropriate characters will be replaced with '?'.

Example

dstring russianText = "Привет, мир!"d;
KOI8RString koi8rText = encodeFromUTF32!KOI8RString(russianText);
ubyte[] expected = [
    0xf0, 0xd2, 0xc9, 0xd7, 0xc5, 0xd4, 0x2c, 0x20, 0xcd, 0xc9, 0xd2, 0x21
];
assert(cast(ubyte[])koi8rText == expected);

AsciiBasedString safeEncodeFromUTF32(AsciiBasedString)(dstring s)

Encodes dstring to KOI8RString or KOI8UString. The input does not have to be valid.

Parameters

s

The UTF32-string for transcoding.

Example

dstring invalidText = "你好,世界!"d;
KOI8RString koi8rText = safeEncodeFromUTF32!KOI8RString(invalidText);
assert(cast(ubyte[])koi8rText == ['?', '?', '?', '?', '?', '?']);

void transcode(AsciiBasedString)(AsciiBasedString source, out dstring dest)

Convert a string from Amalthea ASCII based encoding to UTF-32.

Parameters

source

Source string. It must be validly encoded.

dest

Destination string.

void transcode(AsciiBasedString)(AsciiBasedString source, out string dest)

Convert a string from Amalthea ASCII based encoding to UTF-8.

Parameters

source

Source string. It must be validly encoded.

dest

Destination string.

void transcode(AsciiBasedString)(dstring source, out AsciiBasedString dest)

Convert a string from UTF-32 to Amalthea ASCII based encoding.

Parameters

source

Source string. It must be validly encoded.

dest

Destination string.

void transcode(AsciiBasedString)(string source, out AsciiBasedString dest)

Convert a string from UTF-8 to Amalthea ASCII based encoding.

Parameters

source

Source string. It must be validly encoded.

dest

Destination string.

string decodeByEncodingName(ubyte[] s, string encodingName)

Decodes to UTF-8 string from byte representaion by encoding name.

ubyte[] encodeByEncodingName(string s, string encodingName)

Decodes to any type string from UTF-8 representaion by encoding name.

string getEncodingNameByType(T)()

Gets encoding name by string type.

ubyte[] encodeText(T)(const T[] seq, string fromEncoding, string toEncoding)

The function tries to encode text sequence to new encoding. The convertation is based on libiconv. The list is available with 'iconv --list'.

Parameters

seq

Array of characters (string, dstring, KOI8RString, ubyte[], etc.).

fromEncoding

The start encoding of the transmitted sequence.

toEncoding

The destination encoding for the returned value.

Example

string text = "Привет, мир!";
ubyte[] koi8rText = encodeText(text, "utf-8", "koi8-r");
ubyte[] expected = [
    0xf0, 0xd2, 0xc9, 0xd7, 0xc5, 0xd4, 0x2c, 0x20, 0xcd, 0xc9, 0xd2, 0x21
];
assert(koi8rText == expected);

text = "你好,世界!";
bool error = false;
try {
    koi8rText = encodeText(text, "utf-8", "koi8-r");
} catch (EncodingException e) {
    error = true;
}
assert(error);

Public imports