Как я могу использовать boost::locale::conv::to_utf
для преобразования строки CP437 в Unicode?
У меня есть std::string
, который содержит строку в кодировке CP437 "äöü".Соответствующая кодировка UTF16: 0x00e4, 0x00f6, 0x00fc.Я попытался
std::wstring str_utf = boost::locale::conv::to_utf<wchar_t>(str_437, "CP437");
и
boost::locale::generator gen;
std::locale loc = gen.generate("CP437");
std::wstring str_utf = boost::locale::conv::to_utf<wchar_t>(str_437, loc);
преобразовать строку в строку Unicode, но это не сработало: первый метод вернул неправильные значения wchar_t
0x0004, 0x0014,0x0001 и второй метод не удался с abort() has been called
.
Я также пробовал варианты строки "CP437", например, ".CP437", "cp437", ".cp437" и т. Д., Но ни один изони сработали.
Сначала я подумал, что, возможно, моя строка вообще не кодируется в CP437, но затем я преобразовал строку с использованием библиотеки ICU, и она успешно дала правильные значения UTF16 0x00e4, 0x00f6, 0x00fc.
Почему форсирование завершается неудачно, в то время как ICU успешно выполняется для той же строки?Нужно ли использовать разные идентификаторы кодовой страницы для повышения?