Александр Яшин писал(а):Так компилируется, но в Symbol нечитаемый символ!
Без примера тут будет проблематично разобраться. "Читаемый" и "нечитаемый" -- понятия относительные, зависят от того как выводить, куда выводить и под какой ОС всё это происходит. Если выводить на форму -- то для читабельности нужно его преобразовывать обратно в UTF-8 вне зависимости от платформы, в консоль под Linux -- тоже чаще всего в UTF-8, в в консоль под Windows -- в кодировку OEM Cyrillic (866).
Александр Яшин писал(а):Похоже тип char в Unicode поддерживается только для кодов < 128
Тип char и Unicode -- это две разные вещи. Char - это кусочек памяти размером ровно в один байт. Юникод - это способ кодирования символов, его конкретная разновидность, UTF-8, требует от одного до четырёх байт памяти на один символ. По одному байту -- на символы латиницы, для совместимости, на кириллицу - по два, на восточные кодировки -- 3 и 4 байта. Разумеется, что любой символ UTF-8 не влезет в один байт переменной типа char. Это всё равно что переливать воду из четырёхлитрового бочонка в литровую банку. Если в бочонке было меньше литра (читай "< 128") -- наше счастье, но полагаться на это никоим образом нельзя.
И кстати, можете заглянуть в исходники и посмотреть, что такое TUTF8Char

Ctrl+щелчок мышкой на типе переменной.
- Код: Выделить всё
TUTF8Char = String[7];