У меня есть код UNICODE в моем коде win32. Я предрек это что-то вроде этого ..Странное поведение с текстом UNICODE на окнах
std::wstring a = Träna; //swedish for practice
скопировать это значение в переменную, используя что-то вроде ...
std::wstring b = a;
При отладке я не вижу, что им предполагается получить в b
. я должен получать Träna
в b
, но то, что я получаю Träna
Это наблюдается только на окнах, программа прекрасно работает на OS X.
Я уверен, что его некоторые новобранец ошибка, то, что я я здесь пропал?
Программа, вероятно, отлично работает и в Windows, и ваша визуализация результата нарушена. (Если вы посмотрите на белый лист через красный объектив, он будет выглядеть красным. Означает ли это, что лист грязный?) Вам нужно возиться со своими настройками отладчика или чем-то еще. Единственный способ убедиться в том, что это байты. –
Мое предположение, что ваш исходный файл должен быть сохранен с помощью маркера порядка байтов (кодировка «UTF8 с BOM»). В некоторых версиях MSVC есть ошибка, при которой компилятор не может обнаружить кодировку исходного файла, если только нет спецификации, и предполагает, что файл использует любую 8-битную кодировку в вашей системе. – SigTerm
@ R.MartinhoFernandes: Нет, он также может поразить ошибку, которую я описываю. Gcc и MSVC обрабатывают кодирование в строках по-разному. – SigTerm