Какой формат utf должен повысить возврат wdirectory_iterator?
Если файл содержит знак £ (фунт), то directory_iterator правильно возвращает последовательность символов utf8 \ xC2 \ xA3
wdirectory_iterator использует широкие символы, но все еще возвращает последовательность utf8. Это правильное поведение для wdirectory_iterator или я его неправильно использую?
AddFile(testpath, "pound£sign");
wdirectory_iterator iter(testpath);
TS_ASSERT_EQUALS(iter->leaf(),L"pound\xC2\xA3sign"); // Succeeds
TS_ASSERT_EQUALS(*iter, L"pound£sign"); // Fails
1 ответ
Кодировка для широких букв (wchar_t
объекты) зависит от реализации. Чтобы сработало второе утверждение (т. Е. L"знак фунта £"), вам, вероятно, потребуется изменить базовый язык. По умолчанию используется буква "C", которая не знает о символе фунта. Шестнадцатеричное значение успешно, так как это не требует сопоставления глифа со значением в определенной кодировке.
Примечание: для краткости я пропускаю точную формулировку стандартного wrt wchar_t, расширенных наборов символов и т. Д.