chcp to wbudowane polecenie Windowsa (CMD), które wyświetla albo zmienia aktywną stronę kodową konsoli. Strona kodowa to mapa mówiąca terminalowi, jak interpretować bajty na konkretne znaki — to ona decyduje, czy zobaczysz „zażółć gęślą jaźń”, czy ciąg krzaków. Najczęściej sięgasz po chcp, gdy skrypt, log albo plik wsadowy ma kodowanie inne niż domyślne i polskie ogonki rozjeżdżają się w konsoli. Skrót chcp pochodzi od „change code page”.
Składnia i najważniejsze opcje
Podstawowa składnia jest banalnie krótka:
chcp [numer_strony]
chcp— wywołane bez argumentu po prostu wypisuje numer aktualnie aktywnej strony kodowej.numer_strony— trzy- lub pięciocyfrowy identyfikator strony kodowej, którą chcesz ustawić dla bieżącej sesji konsoli.chcp /?— wyświetla wbudowaną pomoc (jedyny „przełącznik”, jaki ma to polecenie).
Najczęściej spotykane numery: 65001 (UTF-8), 1250 (Europa Środkowa, polskie znaki w Windows), 852 (DOS Latin-2 dla Polski), 437 (oryginalny US), 850 (zachodnioeuropejski DOS).
Przykłady użycia
chcp— sprawdzasz, jaką stronę kodową ma teraz konsola. Świeży CMD w polskim Windowsie zwykle pokazuje852albo1250.chcp 65001— przełączasz konsolę na UTF-8. Przydatne, gdy uruchamiasz skrypty Pythona, Node albo czytasz pliki zapisane w UTF-8 i chcesz, żeby znaki nie były połamane.chcp 1250— wracasz do strony Windows-1250, jeśli starszy program oczekuje właśnie jej dla polskich liter.chcp 437— ustawiasz klasyczną stronę US, czasem wymaganą przez wiekowe narzędzia DOS.chcp 65001 && python skrypt.py— najpierw przełączasz na UTF-8, a potem w tej samej linii odpalasz skrypt, żeby jego output wyświetlił się poprawnie.
Częste błędy i pułapki
Zmiana działa tylko w bieżącym oknie konsoli — zamkniesz CMD i strona wraca do domyślnej. Trwałe ustawienie to inna bajka (zmienne środowiskowe, rejestr albo profil terminala), nie sam chcp.
Po chcp 65001 w starym Raster Fonts znaki Unicode mogą i tak nie zaskoczyć — przełącz czcionkę konsoli na Consolas lub Lucida Console. Bywa też, że po przejściu na UTF-8 w klasycznym CMD przekierowania i niektóre wsady robią się kapryśne, więc do poważnej pracy z Unicode lepszy jest Windows Terminal albo PowerShell.
Nie myl numeru strony kodowej z identyfikatorem locale — chcp przyjmuje numer strony kodowej (np. 1250), nie nazwy typu pl-PL. Wpiszesz nieobsługiwany numer, dostaniesz „Invalid code page”.
Powiązane polecenia: mode (konfiguracja konsoli), type i more (podgląd plików, których kodowanie zależy od strony), a w PowerShellu zmienna $OutputEncoding oraz [Console]::OutputEncoding.