Kodowanie znaków

0

Witam wszystkich serdecznie! :)

Jestem już dość ostro sfrustrowany, bo walczę z problemem, który jest chyba totalnie banalny...

oto kod:

#include <locale>
//...
setlocale(LC_ALL,"Polish");
//...
char *tekst = "Przewód";
cout << tekst << endl;                //konsola:  Przewód
cout << tekst[5] << " to " << int(tekst[5]) <<endl;         //konsola: � to -61

Bardzo proszę o jakąś pomoc :(
Piszę pod Code::Blocks z g++

0

który jest chyba totalnie banalny...
Niestety, nie jest takim.
Są różne rozwiązania, które różnie działają zależnie od kompilatora, jego wersji, od wersji Windowsa i od tego, jaka czcionka jest ustawiona w konsoli (TTF czy raster).

Twój kod przykładowo będzie poprawnie działać pod MS Visual C++.

Ale spróbuj dodać SetConsoleCP/SetConsoleOutputCP.

#include <Windows.h>
SetConsoleCP(1250);
SetConsoleOutputCP(1250);
0

Dzięki za odpowiedź.
Sorry, że w pierwszym poście nie napisałem, ale pracuję na Ubuntu, a wyjście programu wrzucam do gnome-terminal, więc te dwie funkcje u mnie nie działają.

Próbowałem jeszcze odpalić program w QtCreator i jest tak samo jak w C::B, co by wskazywało na winę po stronie g++

Może powinienem spróbować użyć innego kompilatora ?

0

Ma ktoś może pomysł co powinienem z tym zrobić ?
Będę miał trochę czasu to przeinstaluję g++
Przez kilka dni kopałem w necie na ten temat, ale nie znalazłem zupełnie nic... Kilka tematów na różnych forach z podobnym problemem, ale żaden nie miał choćby cienia rozwiązania.

0

Po wielu trudach znalazłem rozwiązanie, które może komuś się przyda, zaoszczędzi czasu i wyrywania włosów z głowy ;)

Zadziałało u mnie wyświetlanie polskich znaków w konsoli poprzez sekwencję JavaScript.

cout << "\u015Awie\u017Ce rozwi\u0105zanie" << endl; // Świeże rozwiązanie

cała tabela znaków (polskich i nie tylko) pod tym adresem: http://konfiguracja.c0.pl/webpl/encje.html

Pozdrawiam

0
Mc_Hammer napisał(a):

cała tabela znaków (polskich i nie tylko) pod tym adresem: http://konfiguracja.c0.pl/webpl/encje.html

Ja zrobiłbym funkcję, która zamieniałaby np.Ś na \u015A, zamiast bawić się z wplątywaniem tego wewnątrz string :P

0

dokładnie tak trzeba to zrobić ;)
wrzuciłem na szybko suche rozwiązanie, bo jeszcze nie miałem wolnej chwili, żeby nad tym usiąść

1 użytkowników online, w tym zalogowanych: 0, gości: 1