boost:: алгоритма::to_upper/to_lower нормально для utf8? boost::locale не нужен?
Я читал в нескольких местах, что boost:: attribute::to_upper/to_lower не подходят для utf8:
- http://www.boost.org/doc/libs/1_51_0/libs/locale/doc/html/conversions.html
- Как преобразовать std:: string в нижний регистр?
- Работа с UTF8
Но в моей системе, ubuntu 12.4.1 32 бита с boost 1.46 и языковой стандарт en_GB.UTF-8, все выглядит нормально, пока я передаю языковой стандарт, например:
std::locale englishUTF8locale("en_GB.UTF-8")
boost::algorithm::to_upper_copy(L"ü", englishUTF8locale) -> L"Ü"
boost::algorithm::to_lower_copy(L"и", englishUTF8locale) ->L"И"
Стоит отметить, что он работает при использовании std:: wstring, но не при использовании std:: string
Значит, boost:: locale на самом деле не нужен? Моя проблема в том, что я могу использовать только буст 1.46, а локаль была создана для 1.48