Кодировку по умолчанию для строковых литералов можно указать с помощью параметра компилятора -fexec-charset
для gcc / g ++.
В C ++ 11 и более поздних версиях также можно использовать u8
, u
,и U
префиксы к строкам для указания кодировок UTF8, UTF16 и UTF32:
const char * utf8literal = u8"This is an unicode UTF8 string! 剝Ц";
const char16_t * utf16literal = u"This is an unicode UTF16 string! 剝Ц";
const char32_t * utf32literal = U"This is an unicode UTF32 string! 剝Ц";
Использование вышеприведенных префиксов может нарушить некоторые функции, которые не ожидают этих конкретных типов строк;в общем, может быть лучше установить опцию компилятора.
В этой статье есть отличная рецензия на эту тему: http://cppwhispers.blogspot.com/2012/11/unicode-and-your-application-3-of-n.html
Надеюсь, это поможет.:)