I create this simple program: #include <iostream> #include <locale> #include <clocale> #include <cstdio> using namespace std; int main() { locale loc("ru_RU.UTF-8"); cout.imbue(loc); cout << 1234.56 << std::endl; setlocale(LC_NUMERIC, "ru_RU.UTF-8"); printf("%'.2f\n", 1234.56); return 0; } Result is: 1?234,56: (in hex): \x31\xC2\x32\x33\x34\x2C\x35\x36 1 234,56: (in hex): \x31\x20\x32\x33\x34\x2C\x35\x36 Here '?' is invalid symbol \xC2 then I try (code in C): #include <stdio.h> #include <locale.h> int main() { setlocale(LC_ALL, "ru_RU.UTF-8"); printf("\"%s\"\n", localeconv()->thousands_sep); printf("%f\n", 1234.56); return 0; } Output is: " " (one space in double quotes)
*** This bug has been marked as a duplicate of 16006 ***