Привет всем.
Не работает локаль правильно в Федоре 7. Раньше проблем на ФриБСД не было. Вот код, в котором to_lower не работает.
#include <string> #include <iostream> #include <locale>
#include <boost/algorithm/string.hpp>
int main() { std::string s = "ЙцУкЕН"; // utf8
std::setlocale(LC_ALL, ""); std::cout << boost::to_lower_copy(s) << std::endl;
std::locale loc("ru_RU.UTF-8"); std::cout << boost::to_lower_copy(s, loc) << std::endl;
return 0; }
вот вывод locale
LANG=ru_RU.UTF-8 LC_CTYPE="ru_RU.UTF-8" LC_NUMERIC="ru_RU.UTF-8" LC_TIME="ru_RU.UTF-8" LC_COLLATE="ru_RU.UTF-8" LC_MONETARY="ru_RU.UTF-8" LC_MESSAGES="ru_RU.UTF-8" LC_PAPER="ru_RU.UTF-8" LC_NAME="ru_RU.UTF-8" LC_ADDRESS="ru_RU.UTF-8" LC_TELEPHONE="ru_RU.UTF-8" LC_MEASUREMENT="ru_RU.UTF-8" LC_IDENTIFICATION="ru_RU.UTF-8" LC_ALL=
Проблема, видимо, где-то глубоко, так как
echo qйq | tr '[:lower:]' '[:upper:]'
выводит
QйQ
наверно что-то не так с glibc, хотя все стоит и рабоает "из коробки". Посоветуйте как быть? Куда копать?
Заранее спасиб!