Недавно я попытался получить полное представление о том, какие шаги требуется для создания независимых на платформе приложений на С++, поддерживающих unicode. Меня смущает то, что большинство howtos и прочее выравнивают кодировку символов (то есть ANSI или Unicode) и тип символа (char или wchar_t). Как я уже узнал, это разные вещи, и может существовать последовательность символов, закодированная в Юникоде, но представленная std::string, а также последовательность символов, закодированная в ANSI, но представленная как std:: wstring, правильно?
Итак, вопрос, который приходит мне на ум, заключается в том, дает ли стандарт С++ какую-либо гарантию относительно кодирования строковых литералов, начиная с L
, или просто говорит это типа wchar_t со специфической кодировкой для конкретной версии?
Если такой гарантии нет, означает ли это, что мне нужна какая-то внешняя система ресурсов для предоставления строковых литералов без ASCII для моего приложения независимо от платформы? Каков предпочтительный способ для этого? Система ресурсов или правильное кодирование исходных файлов плюс правильные параметры компилятора?