2013-10-29 4 views
-1

У меня есть код UNICODE в моем коде win32. Я предрек это что-то вроде этого ..Странное поведение с текстом UNICODE на окнах

std::wstring a = Träna; //swedish for practice 

скопировать это значение в переменную, используя что-то вроде ...

std::wstring b = a; 

При отладке я не вижу, что им предполагается получить в b. я должен получать Träna в b, но то, что я получаю Träna Это наблюдается только на окнах, программа прекрасно работает на OS X.

Я уверен, что его некоторые новобранец ошибка, то, что я я здесь пропал?

+0

Программа, вероятно, отлично работает и в Windows, и ваша визуализация результата нарушена. (Если вы посмотрите на белый лист через красный объектив, он будет выглядеть красным. Означает ли это, что лист грязный?) Вам нужно возиться со своими настройками отладчика или чем-то еще. Единственный способ убедиться в том, что это байты. –

+0

Мое предположение, что ваш исходный файл должен быть сохранен с помощью маркера порядка байтов (кодировка «UTF8 с BOM»). В некоторых версиях MSVC есть ошибка, при которой компилятор не может обнаружить кодировку исходного файла, если только нет спецификации, и предполагает, что файл использует любую 8-битную кодировку в вашей системе. – SigTerm

+0

@ R.MartinhoFernandes: Нет, он также может поразить ошибку, которую я описываю. Gcc и MSVC обрабатывают кодирование в строках по-разному. – SigTerm

ответ

1

Как @SigTerm и @jukka сказали выше, проблема была в кодировке UTF-8.

После сохранения файла cpp в < Unicode UTF-8 с сигнатурой> проблема была решена. Файл ранее сохранен в < Unicode UTF-8 без подписи>. Это не проблема с префиксом L, я уже определил свои переменные как это.

Смежные вопросы