Vladimir писал(а):Если я правильно понял, переменные типа string могут содержать как одно так и двух байтовый текст...
Если точнее, переменные типа string могут содержать текст либо в однобайтовой кодировке, либо в UTF-8, в которой кодовые последовательности имеют длину от 1 до 4 байт.
Vladimir писал(а): ... почему бы не рассмотреть вариант возврата значений в виде string, но в 2-х байтовом виде? Или принципиально использование именно UTF-16?
Mr.Smart писал(а):В спецификации DOM используются толко строки UCS-2/UTF-16. Придставление кодировки UCS-2/UTF-16 в типе String невозможно по одной простой причине. В String конец строки представлен символом #0, а так как в UTF-16 для кодов символов < 0xFF первый байт всегда 0 получается полная путаница. Для предствления UCS-2/UTF-16 есть тип WideString в котором данная путаница непоявится.
Кроме того, для USC-2/UTF-16 есть два варианта представления - Big Endian и Little Endian, в зависимости от того, в какой последовательности расположены байты (сначала младший потом старший или наоборот). Поэтому для однозначной конвертации в string пришлось бы либо глобально договариваться, какой из них использовать, либо вставлять дополнительный маркер, обозначающий способ представления. А при представлении через WideString, если не ошибаюсь, обработкой последовательности байтов занимается компилятор.