>> Теперь я понял. utf8 должен задаваться как CrTSString.

Не совсем. UTF8-строка должна задаваться как массив байтов так как размер символа в ней имеет переменную длину. В тех местах где нужны латинские буквы, в массиве должно быть выделено по одному байту, а в тех местах где другие буквы (например, русские), там в этом массиве должно быть отведено по два байта на букву.