Используйте локаль boost вместе с Firebreath

Я создаю расширение для Chrome с помощью Firebreath: http://slimtext.org и столкнулся с проблемой: расширение не поддерживает китайский язык. символы очень хорошо на Windows. После долгих исследований я нашел это: http://www.boost.org/doc/libs/1_50_0/libs/locale/doc/html/default_encoding_under_windows.html

Я думаю, что решение состоит в том, чтобы использовать boost/locale. Но проект https://github.com/firebreath/firebreath-boost, похоже, не содержит повышение/локаль. Ветка 1.50.0 содержит более новый boost, чем основная ветка, но ни одна из них не содержит boost/locale.

Я пытался использовать внешнее повышение или скопировать код локали из внешнего повышения, но не удалось (не удалось связать с локалью при выполнении make)

Что вы предлагаете? Как я могу использовать локаль boost вместе с Firebreath?


person Tyler Long    schedule 17.03.2013    source источник


Ответы (2)


Firebreath-Boost — это всего лишь подмножество полного усиления. Чтобы использовать весь буст, установите boost вручную и используйте системный буст. см. http://www.firebreath.org/display/documentation/Prep+Scripts

person taxilian    schedule 17.03.2013
comment
Спасибо за ответ. Я попытался скомпилировать и установить новейшую версию Boost 1.53.0 и следовать инструкциям, которые вы публикуете. Без всякого везения. Совместим ли Firebreath с Boost 1.53.0? - person Tyler Long; 17.03.2013
comment
Вам нужно связать систему повышения - person taxilian; 17.03.2013
comment
Планируете ли вы добавить локаль в проект firebreath-boost? Тогда я смогу запустить проект так же, как и раньше. Теперь мне нужно много заниматься отладкой и настройкой. (Я все еще не могу заставить его работать в Windows). Я думаю, что локаль очень важна для i18n. В противном случае firebreath не сможет поддерживать другие языки, кроме тех, что связаны с ascii. - person Tyler Long; 19.03.2013
comment
В настоящее время у меня нет таких планов; Я мог бы изучить его в какой-то момент - person taxilian; 19.03.2013
comment
Оказывается, проблема очень сложная, и я не уверен, является ли ключом boost/locale или нет. Наконец, я решил свою первоначальную проблему без него. Смотрите мой ответ. - person Tyler Long; 24.03.2013

Мне не удалось скомпилировать мой проект Firebreath с помощью внешнего Boost в Windows. И после долгих исследований я начинаю сомневаться, что boost/locale является ключом к моей первоначальной проблеме: проблеме с кодировкой китайских иероглифов.

Наконец, я решил это без повышения/локали:

  1. по возможности используйте wstring вместо string
  2. возможно, вам придется написать код отдельно для Windows и других операционных систем, например:

#ifdef _WIN32

    file.open(path.c_str()); //path is std::wstring

#else

    fs::path the_path(path);            
    file.open(the_path.generic_string().c_str());

#endif

person Tyler Long    schedule 18.03.2013
comment
Обратите внимание на огнедышащие функции FB::utf8_to_wstring и FB::wstring_to_utf8. - person taxilian; 25.03.2013