Кодировка исходника UTF-8, так что с этой стороны проблем вроде бы быть не должно. А вот пример - да, неудачный я привёл, т.к. не видно где тут WideString. Реально там вот такой код:
- Код: Выделить всё
procedure TWindow.SetText(Value: WideString);
begin
gtk_window_set_title(PGtkWindow(FWindow), Pgchar(UTF8Encode(Value)));
end;
Window.SetText('Тест Œ');
Если функцию UTF8Encode исключить, то вместо одного нужного символа выводятся два левых (например, вместо Œ выводится R и квадратик). Что логично, т.к. WideString, насколько я понимаю, это UCS-2...
Пробовал также такой вариант:
- Код: Выделить всё
Window.SetText('Тест ' + #338);
Результат аналогичный - заголовок не выводится вообще. И даже вот так пробовал:
- Код: Выделить всё
var
W: WideString;
...
W := 'Тест ' + #338;
Window.SetText(W);
То же самое. Когда аналогичный заголовок делаю в win32api-коде - заголовок выводится правильный. Да, забыл написать, что все эксперименты проводятся c Windows-версией GTK, а не в Linux'е.
Может, есть какие-то тонкости работы с юникодом в GTK? Может, я чего-то где-то не учитываю...