• Najnowsze pytania
  • Bez odpowiedzi
  • Zadaj pytanie
  • Kategorie
  • Tagi
  • Zdobyte punkty
  • Ekipa ninja
  • IRC
  • FAQ
  • Regulamin
  • Książki warte uwagi

question-closed Dziwny problem z polskimi znakami w konsoli

Object Storage Arubacloud
0 głosów
2,273 wizyt
pytanie zadane 25 października 2015 w C i C++ przez dywan666 Nowicjusz (200 p.)
zamknięte 26 października 2015 przez Eryk Andrzejewski
Witam mam pewien problem z polskimi znakami w konsoli. Używam code blocksa i od nauczyciela dostałem taką funkcje aby zostały wprowadzone polskie znaki

void SetCP1250()
{
    SetConsoleCP(1250);
    SetConsoleOutputCP(1250);
    setlocale(LC_ALL, "1250");
}

Taki gotowy szablon, który działa na komputerach na uczelni, jednak gdy odpalam code blocksa u siebie z tym szablonem występuje problem z polskimi znakami. W samym tym szablonie jest np napis łańcuch i on w programie nie jest wyświetlany prawidłowo (nie ma ł ani ń), ale gdy wcisnę F9 to na konsoli napis wyświetla się poprawnie.
Gdy w code blocksie poprawie ten napis i zamienie te dziwne znaki na polskie, po wciśnięciu F9 na konsoli nie ma już polskich znaków (aczkolwiek moge je swobodnie wpisywać, czyli teoretycznie są).
Myślałem już nawet że to wina windowsa 10, ale na XP problem jest ten sam.
Przepraszam za chaos w tym opisie ale nie wiedziałem jak to inaczej opisać. Może mam coś zaznaczone niepotrzebnie np w ustawieniach code blocksa? Proszę o pomoc

 

edit: czcionka w konsoli to Lucida Console
komentarz zamknięcia: Problem rozwiązany

3 odpowiedzi

+2 głosów
odpowiedź 25 października 2015 przez dywan666 Nowicjusz (200 p.)
Naprawione! W ustawieniach code blocksa zmieniłem kodowanie na "Use this encoding as default encoding..." i wszystko śmiga jak należy. Dziękuje bardzo wszystkim którzy próbowali pomóc ;)
+1 głos
odpowiedź 25 października 2015 przez furas Maniak (53,800 p.)

Jest wiele standardów kodowania polskich liter. Różne systemy mogą stosować różny standard.

Kiedyś (zanim powstał WIndows) stosowano głównie CP852 i Mazovia. WIndows wprowadziło CP1250 (znane też jako windows-1250). W Linux przeważnie ustawione jest UTF-8.

https://pl.wikipedia.org/wiki/Kodowanie_polskich_znak%C3%B3w

komentarz 25 października 2015 przez dywan666 Nowicjusz (200 p.)
W Code Blocksie mam ustawione windows-1250.
komentarz 25 października 2015 przez furas Maniak (53,800 p.)
Nie ma znaczenia co masz w Code Block tylko co system operacyjny używa.
Trzeba w programie mieć ustawienia zgodne z ustawieniami systemu.
komentarz 25 października 2015 przez dywan666 Nowicjusz (200 p.)
Wszystko jest ustawione na windows 1250
komentarz 25 października 2015 przez furas Maniak (53,800 p.)
Nie wiem jak zrobić to w C/C++ ale można by było w programie pobrać z klawiatury polski znak wyświetlić jego kod (liczbowy) i sprawdzić w tabeli na Wikiedii jakie jest to kodowanie. Wtedy wiesz jakiego kodowania jest używawne przez klawiaturę - to samo kodowanie będzie stosowane przy ekran.

---

Przy okazji: spotkałem się z sytuacją pod Windows, że konsola używała kodowania CP852 a system plików kodowania CP1250. Tak więc polskie litery wprowadzane z klawiatury nie zgadzały się z polskimi literami w nazwach plików i nie dało się podać z klawiatury nazwy pliku do wczytania jeśli miał polskie litery ;)
komentarz 25 października 2015 przez dywan666 Nowicjusz (200 p.)
Tak wiem że można tak zrobić, ale dlaczego tak się dzieje, ze muszę to wpisywać?
komentarz 25 października 2015 przez furas Maniak (53,800 p.)
Ludzie powymyślali różne kodowania polskich liter i teraz nie ma jednego używanego we wszystkich miejscach. W niektórych pozostawiono stare CP852 dla kompatybilności ze starymi programami. W niektórych Microsoft stara się narzucić swój standard CP1250 ale nie wszyscy lubią Microsoft.
komentarz 25 października 2015 przez dywan666 Nowicjusz (200 p.)
No ale systemy się zgadzają - i na uczelni jest XP i ja mam XP, szablon identyko, więc no mam coś skopane u siebie - póki co niestety nie dowiedziałem się gdzie.
+1 głos
odpowiedź 25 października 2015 przez criss Mędrzec (172,590 p.)

Co to znaczy, że w szablonie jest napis łańcuch? Żeby w codebloksie były wyświetlanie poprawnie, zmień kodowanie na UTF8. Co do poprawnego odczytywania przez kompilator - MZ to tłumaczył. https://www.youtube.com/watch?v=9SnZMDONhFU

A wpisywane bezpośrednio w konsoli polskie znaki zawsze są wyświetlane poprawnie - nie ma w tym nic dziwnego.

komentarz 25 października 2015 przez dywan666 Nowicjusz (200 p.)
A no i przecież ta funkcja podana przeze mnie w 1 poście powinna mi włączać to kodowanie windows-1250, nie mam racji?
komentarz 25 października 2015 przez furas Maniak (53,800 p.)
No ta funkcja powinna przełączać na odpowiednie kodowanie ale widać nie robi tego. Może okno, którym się program uruchamia nie daje takiej możliwości. A próbowałeś uruchamiać programy poza CB ? Może uruchomione bezpośrednio z cmd.exe nie mają tego problemu.
komentarz 25 października 2015 przez dywan666 Nowicjusz (200 p.)
Nie próbowałem gdyż nie mam pojęcia jak to zrobić.
komentarz 25 października 2015 przez furas Maniak (53,800 p.)
Zdaje się kombinacja Ctr+R uruchamia pole gdzie można podać nazwę programu do uruchomienia. Wpisujesz cmd.exe i powinno się otworzyć okno konsoli (zwane tez terminalem lub po prostu cmd.exe). W tym oknie należało by przejść do katalogu gdzie jest skompilowany program i go uruchomić.

Ale skoro nie znasz `cmd.exe` to może łatwiej będzie znaleźć katalog ze skompilowanym programem i kliknąć myszkę na jego ikonkę. Tylko w programie trzeba by dać jakąś `pause` lub czekanie na wciśnięcie klawisza bo inaczej program otworzy okno, wykona kod i zaraz zamknie okno - i nie będzie czasu na zobaczenie co wypisał.
komentarz 25 października 2015 przez dywan666 Nowicjusz (200 p.)

Spróbuję, a jeszcze w międzyczasie wysyłam screen z tym powiadomieniem:

Podobne pytania

0 głosów
2 odpowiedzi 738 wizyt
0 głosów
1 odpowiedź 413 wizyt
0 głosów
2 odpowiedzi 211 wizyt

92,580 zapytań

141,433 odpowiedzi

319,665 komentarzy

61,965 pasjonatów

Motyw:

Akcja Pajacyk

Pajacyk od wielu lat dożywia dzieci. Pomóż klikając w zielony brzuszek na stronie. Dziękujemy! ♡

Oto polecana książka warta uwagi.
Pełną listę książek znajdziesz tutaj.

Akademia Sekuraka

Kolejna edycja największej imprezy hakerskiej w Polsce, czyli Mega Sekurak Hacking Party odbędzie się już 20 maja 2024r. Z tej okazji mamy dla Was kod: pasjamshp - jeżeli wpiszecie go w koszyku, to wówczas otrzymacie 40% zniżki na bilet w wersji standard!

Więcej informacji na temat imprezy znajdziecie tutaj. Dziękujemy ekipie Sekuraka za taką fajną zniżkę dla wszystkich Pasjonatów!

Akademia Sekuraka

Niedawno wystartował dodruk tej świetnej, rozchwytywanej książki (około 940 stron). Mamy dla Was kod: pasja (wpiszcie go w koszyku), dzięki któremu otrzymujemy 10% zniżki - dziękujemy zaprzyjaźnionej ekipie Sekuraka za taki bonus dla Pasjonatów! Książka to pierwszy tom z serii o ITsec, który łagodnie wprowadzi w świat bezpieczeństwa IT każdą osobę - warto, polecamy!

...