Bei dem Zeichensatz "UTF-16" handelt es sich nicht um einen Zeichensatz, wie z.B. "Windows Codepage 1252", sondern vielmehr um eine Codierung von Unicode-Zeichen.
Der von KEYTAB implementierte Algorithmus zur Umwandlung von Unicode in UTF-16 lautet im C-Source:
if( lunicode < 0x10000l )
{
if( string!=NULL )
{
string[0] = (lunicode >> 8) & 0xFF;
string[1] = lunicode & 0xFF;
}
used = 2;
}
else
{
if( string!=NULL )
{
lunicode = uniMakeSurrogate(lunicode);
string[0] = (lunicode >> 24) & 0xFF;
string[1] = (lunicode >> 16) & 0xFF;
string[2] = (lunicode >> 8) & 0xFF;
string[3] = lunicode & 0xFF;
}
used = 4;
}