Cześć. Ostatnio przeniosłem się na CodeBlocks i po wyłączeniu środowiska CB zmienia mi polskie znaki na krzaczki.

#include <iostream>
#include <windows.h>

using namespace std;

int main()
{
    setlocale( LC_ALL, "" );

    cout << "¹æê³ñ󜿟¥ÆÊ£ÑÓŒ¯";
    cout << "¹æê³ñ󜿟¥ÆÊ£ÑÓŒ¯" ;
    cout << "Dzia³a i nie wiadóñ";
    cout << "³æ¹óê¹¹óêó¹";
    return 0;
}

Wygląda to tak.

Po odpaleniu kodu wyświetla sie komunikat że kompilator zmienił kodowanie na UTF-8 aby zabezpieczyć dane przed ich utratą.

Jak widać powyżej używam setlocale( LC_ALL, "" ); do konwersji na polskie znaki. Używam kodowania Windows-1250, mam winde 8.1. Próbowałem zmienić na UTF-8 i as default encoding, ale wtedy w konsoli w ogóle nie wyświetlają się pl znaki. Próbowałem przeróżnych kodów źródłowych, ale żadne nie działają.

W VS używałem opcji poniżej, która przy używaniu wcout i L dawała świetne rezultaty, lecz wcout nie współpracuje ze string, więc na dłuższą metę i tak nie znalazłem rozwiązania.

std::wcout.imbue(std::locale("Polish_poland.852"));

Jeśli ktoś zna rozwiązanie problemu proszę o pomoc.