Я все еще пытаюсь решить, должен ли мой (домашний) проект использовать UTF-8. строки (реализованные в терминах std::string с дополнительными функциями, специфичными для UTF-8, когда это необходимо) или некоторые 16-битные строки (реализованные как std::wstring). Проект представляет собой язык программирования и среду (как и VB, это комбинация того и другого).
Есть несколько пожеланий/ограничений:
- Было бы здорово, если бы он мог работать на ограниченном оборудовании, например, на компьютерах с ограниченным объемом памяти.
- Я хочу, чтобы код работал на Windows, Mac и (если позволяют ресурсы) Linux.
- Я буду использовать wxWidgets в качестве слоя графического интерфейса, но я хочу, чтобы код, взаимодействующий с этим набором инструментов, был заключен в угол кодовой базы (у меня будут исполняемые файлы без графического интерфейса).
- Я хотел бы избежать работы с двумя разными типами строк при работе с видимым пользователем текстом и с данными приложения.
В настоящее время я работаю с std::string с намерением использовать функции манипулирования UTF-8 только при необходимости. Для этого требуется меньше памяти, и, похоже, именно в этом направлении идут многие приложения.
Если вы рекомендуете 16-битную кодировку, какую: UTF-16? UCS-2? Еще один?