Я предполагаю, что проблема заключается в преобразовании из кодировки UCS4 (которая на самом деле является номером кодовой точки Unicode) в UTF16.
В Delphi вы можете использовать функцию UCS4StringToUnicodeString
.
Предупреждение: Будьте осторожны с типом UCS4String
. На самом деле это динамический массив с нулевым символом в конце, а не строка (это означает, что он начинается с нуля).
var
S1: UCS4String;
S: string;
begin
SetLength(S1, 2);
S1[0]:= UCS4Char($1D15E);
S1[1]:= UCS4Char(0);
S:= UCS4StringToUnicodeString(S1);
ShowMessage(Format('%d, %x, %x', [Length(S), Ord(S[1]), Ord(S[2])]));
end;