glibmm 2.4 неверная последовательность байтов на входе преобразования

Попытка использовать Glibmm-2.4 для вывода китайского возвращает "Недопустимая последовательность байтов во входных данных преобразования".

#include <iostream>
#include <glibmm/ustring.h>
#include <glibmm/convert.h>

int main()
{
  Glib::ustring myUstring = "中";
  try
  {
    std::cout << myUstring;
  }
  catch(Glib::ConvertError e)
  {
    std::cout << e.what();
  }
  return 0;
}

Есть идеи, что я здесь делаю не так? Использование Ubuntu 14.04.2 i386 LTS, g++, glibmm-2.4

1 ответ

Решение

Требуется инициализация локали, например std::locale::global(std::locale("")); чтобы использовать ustring и правильно выполнить неявное преобразование оператора потока, в противном случае символы вне ASCII не будут преобразованы правильно.

Это задокументировано здесь

Другие вопросы по тегам