Да в ББ не Unicode UTF8, а UCS-2, в Unicode UTF8 для хранения используется переменное число битов а не всегда 2 как в UCS-2.
Для конвертации удобно использовать процедуру из
подсистемы ИН Горячева.
Код:
PROCEDURE ToUtf8 (IN s : ARRAY OF CHAR; OUT us : ARRAY OF SHORTCHAR);
VAR (* Автор: ГИН*)
i, j, val, ulen : INTEGER;
BEGIN
i := 0; j := 0; ulen := LEN(us) - 1;
WHILE (i < LEN(s)) & (s[i] # 0X) & (j < ulen) DO
val := ORD(s[i]);
IF val < 128 THEN
us[j] := SHORT(CHR(val)); INC(j)
ELSIF val < 2048 THEN
IF j < ulen - 1 THEN
us[j] := SHORT(CHR(val DIV 64 + 192)); INC(j);
us[j] := SHORT(CHR(val MOD 64 + 128)); INC(j)
ELSE
ulen := 0
END
ELSE
IF j < ulen - 2 THEN
us[j] := SHORT(CHR(val DIV 4096 + 224)); INC(j);
us[j] := SHORT(CHR(val DIV 64 MOD 64 + 128)); INC(j);
us[j] := SHORT(CHR(val MOD 64 + 128)); INC(j)
ELSE
ulen := 0
END
END;
INC(i)
END;
us[j] := 0X
END ToUtf8;