Добрый день. Вот задался таким вопросом. Думаю, какой вариант выбрать:
1. Все строки внутри приложения хранить и обрабатывать в Glib::ustring (в случае с gtkmm, или в каком-нибудь другом строковом классе с поддержкой юникода, когда приложение пишется не под GTK) и преобразовывать в кодировку локали только тогда, когда необходимо использовать строку как имя файла, записать в файл, вывести на консоль и т. п...
2. Все строки внутри приложения хранить в кодировке локали и преобразовывать в UTF только тогда, когда требуется, например, передать строку функциям gtkmm (опять же в случае, когда приложение пишется под GTK).
Первый вариант, вроде бы, предпочтительней, т. к. позволят приложению работать с символами, которых может не оказаться в кодировке текущей локали, но: далеко не все библиотеки поддерживают юникод, и, как правило, их функции принимают std::string. Если функция библиотеки принимает std::string, то она воспринимает ее как строку в кодировке локали, а не как UTF строку, следовательно, если она выполняет какие-то действия с данными строками, то, возможно, попытка обработать UTF строку вызовет у нее ошибку.
Поделитесь, пожалуйста, своим опытом: какой вариант вы считаете лучшим, и какие проблемы он за собой потянет. Спасибо.



Ответ на:
комментарий
от const86
Ответ на:
комментарий
от Ximik
Ответ на:
комментарий
от riYu

Ответ на:
комментарий
от const86

Ответ на:
комментарий
от const86
Вы не можете добавлять комментарии в эту тему: топик перемещен в архив.