Unicode-унификация?

Вопросы программирования и использования среды Lazarus.

Модератор: Модераторы

Unicode-унификация?

Сообщение Flanter » 23.12.2009 13:52:33

Сегодня впервые сел за компьютер, где имя пользователя введено русскими символами. Выяснил много интересного о том, как моя программа работает (точнее, не работает) на таком компьютере :) Оказалось, что функция GetEnvironmentVariable возвращает значение переменной (в моём случае, APPDATA) в OEM-кодировке, соответственно, вместо имени пользователя в пути профиля были кракозябры. Ок, написал свою функцию GetEnvironmentVariable, которая возвращает путь в unicode. Уже потом нашёл свежий баг на багтрекере с такой же проблемой.

Потом, памятуя о том, что файловые функции требуют Ansi-имена, я везде честно писал что-то вроде

Код: Выделить всё
ForceDirectories(UTF8ToAnsi(DataDir));

И вдруг выяснилось, что функция CopyFile сама делает такое перекодирование и ей-то как раз надо подсовывать имена в UTF8. Голова идёт кругом от обилия кодировок и разнообразия способов работы с ними функций :)

Собственно, вопрос: планируется ли командой Lazarus в будущем, пусть даже не очень близком, чистка всего этого безобразия и приведения всего к единому стандарту - чтобы всё было в unicode? Или, чтобы не поломать обратную совместимость, это уже не будет трогаться? Я так понимаю, что частично проблема идёт от FreePascal'я, где, например, TFileStream реализован исключительно в Ansi-версии. Есть ли у команды FreePascal планы по юникодификации этих классов? Или проще начать писать свои нестандартные обертки вокруг стандартных классов?
Flanter
новенький
 
Сообщения: 42
Зарегистрирован: 03.11.2007 22:15:54

Re: Unicode-унификация?

Сообщение Mr.Smart » 23.12.2009 14:39:27

Flanter
Планы есть и постепенно RTL/FCL будет переведён в UTF-8 полностью.
Со стороны Lazarus весь LCL полностью реализован с поддержкой UTF-8.
Для обратной совместимости кода используйте LCL функции вида UTF8ToSys и SysToUTF8 :wink:
Mr.Smart
долгожитель
 
Сообщения: 1796
Зарегистрирован: 29.03.2008 01:01:11
Откуда: из леса!

Re: Unicode-унификация?

Сообщение Flanter » 23.12.2009 14:47:29

Это хорошо, а то полноценного Unicode пока не получается... выберет пользователь в диалоге файл с символами Unicode в имени, а моя программа с TFileStream открыть его и не сможет :) А примерные сроки (или версии FPC) когда RTL/FLC станет полноценно поддерживать Unicode пока не намечались?

Правильно ли я понимаю, что UTF8ToSys и SysToUTF8 в будущем (когда FPC станет юникодным) станут просто пустышками, которые не будут ничего делать? И их не придётся вычищать из кода программ?
Flanter
новенький
 
Сообщения: 42
Зарегистрирован: 03.11.2007 22:15:54

Re: Unicode-унификация?

Сообщение Mr.Smart » 23.12.2009 14:54:35

Flanter писал(а):Правильно ли я понимаю, что UTF8ToSys и SysToUTF8 в будущем (когда FPC станет юникодным) станут просто пустышками, которые не будут ничего делать? И их не придётся вычищать из кода программ?

совершенно верно, а насчёт сроков есть такое ВЕЛИКОЕ русское сокращение Х.З. :wink:
Mr.Smart
долгожитель
 
Сообщения: 1796
Зарегистрирован: 29.03.2008 01:01:11
Откуда: из леса!

Re: Unicode-унификация?

Сообщение Flanter » 23.12.2009 14:57:44

Ок, спасибо, буду использовать эти функции.

А насчёт сроков - я примерно так и предполагал :) Буду пока писать свои классы, начиная с TFileStreamUnicode.
Flanter
новенький
 
Сообщения: 42
Зарегистрирован: 03.11.2007 22:15:54

Re: Unicode-унификация?

Сообщение kirill » 26.10.2010 00:06:40

Я так понял это Х.З. не настало?
kirill
новенький
 
Сообщения: 22
Зарегистрирован: 25.10.2010 19:40:45
Откуда: Kaliningrad, RF

Re: Unicode-унификация?

Сообщение Odyssey » 26.10.2010 00:41:04

Odyssey
энтузиаст
 
Сообщения: 580
Зарегистрирован: 29.11.2007 17:32:24


Вернуться в Lazarus

Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 64

Рейтинг@Mail.ru