chcp

Wyświetla lub zmienia aktywną stronę kodową konsoli (np. 65001 dla UTF-8).

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 pokazuje 852 albo 1250.
  • 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 localechcp 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.