cmd – Chcp-change region or language code page

cmd – Chcp-change region or language code pageCa noi toti in fiecare zi invatam cate ceva. Intamplator incercand sa ajut pe cineva am dat pe net de comanda chcp.

Sincer eu nu m-am confruntat pana acum cu o astfel de nevoie dar am zis ca este ceva interesat si merita impartasit.

Daca v-ati confruntat cu situatii cand trebuia sa gestionati fisiere, directoare care in denumire aveau caractere speciale, diacritice (ă,î,ț,ș,â), si nu reuseati sa-i dati de cap, inseamna ca nu stiati de chcp. Acum stiti :).

cmd – Chcp-change region or language code page

Comanda chcp nu face alceva decat sa afisieze/schimbe cod page-ul din consola cmd.

La windows XP este mai dificil cu denumiri care sa contina astfel de caractere. Am facut teste pe unPC cu windows 7 si pare sa nu aiba probleme de interpretarea legat de cod page-ul setat.

Practic daca vrem sa folosind cmd-ul, pentru copy, xcopy, cut, robocopy,…etc (copiat, mutat sau sincronizat sau pur si simplu afisare corecta), fisiere sau directoare, care contin caractere speciale (diacritice in special), trebuie sa avem grija sa folosim code page-ul corect. Ca sa intelegeti despre ce vorbesc vom incerca un “mic” exemplu.

cmd – Chcp-change region or language code pageInainte de toate, pentru batranul XP care este folosit inca de multi dintre noi, trebuie sa avem grija sa fie instalat cod page-ul aferent limbajului dorit. In cazul nostru trebuie sa verificam in setari ca avem instalat cod page-ul 852 (OEM – Latin II).

Pentru asta intram in Control Panel/Regional and Language Options si selectam tab-ul “Advanced” unde avem grija sa fie selectat “Romanian” si bifat “852 (OEM – Latin II)“.
Este posibil ca dupa ce selectam Appy si OK sa solicite CD-ul cu Kit-ul de instalare, iar pentru finalizare este nevoie de un restart la PC.

Dar sa revenim la exemplu.

Avem directorul (folder) D:\Chcp_demo in care am generat un fisier txt, iar in denumirea acestuia am folosit diacritice (Semnătură.txt).

Ca sa nu uit :). Pentru asta (scris cu diacritice) avem nevoie sa activam Input Language RO. Tot din Control Panel/Regional and Language Options si selectam tab-ul “Languages” > “Details…“, din noua fereastra selectam “Settings“, dupa care “Add…“, din urmatoarea fereastra deschisa (nu am mai pus poza) selectam Romanian la Input Language:   dupa care OK.

cmd – Chcp-change region or language code page

Cum spuneam vom incerca sa il copiem (fisierul Semnătură.txt) in urmatoarea cale D:\Chcp_demo\test.
cmd – Chcp-change region or language code page

Intr-o prima faza verificam in ce cod page suntem folosind comanda simpla chcp in cmd.

D:\Chcp_demo>chcp
Active code page: 437

Conform tabelei de pe site-ul Microsoft 437 este cod pqge pentru US.


Code page – Country/region or language
437 – United States
850 – Multilingual (Latin I)
852 – Slavic (Latin II)
855 – Cyrillic (Russian)
857 – Turkish
860 – Portuguese
861 – Icelandic
863 – Canadian-French
865 – Nordic
866 – Russian
869 – Modern Greek


In mod normal nu ar trebui sa ne facem probleme, dar cum spuneam si mai sus, dar daca insa vrem folosim linia de comanda pentru situatii mai complexe, pentru copy/cut, sincronizat sau pur si simplu afisare corecta a unor fisiere/directoare care contin caractere specifice, atunci este obligatoriu sa folosim cod page-ul corect.

Ca verificare incercam comada dir, pentru a lista continutul directorului D:\Chcp_demo, sa vedem cum se afiseaza:

D:\Chcp_demo>dir /b
Semnatura.txt
test

Observam ca nu apare ă+ul in ecuatie asa ca schimbam cod page-ul in 852 – Slavic (Latin II).

D:\Chcp_demo>chcp 852
Active code page: 852

Testam iar folosind comanda dir, pentru listare.

D:\Chcp_demo>dir /b
Semnătură.txt
test

De aceasta data se afiseaza corect.

Hai sa facem si un mic exemplu pentru situatia in care vrem sa copiem fisierul Semnătură.txt folosind un .bat. Pentru asta vom face un fisier copy.bat.

Datorita cod page-ului atipic, sau mai exact specific, pe vrem sa-l folosim, trebuie sa avem grija cum facem acest fisier copy.bat. Mai exact trebuie sa aiba tipul de codificare pentru regiunea sau limbajul (region or language) in care va fi scris a linia de comanda, alfel nu va putea rula corect.

Ca sa fim siguri deschidem “wordpad.exe” (start>run introducem wordpad.exe si OK).cmd – Chcp-change region or language code page
Introducem codul dorit in wordpad.
cmd – Chcp-change region or language code page
si salvam fisierul de tip Text Document – MS-DOS Format.
 cmd – Chcp-change region or language code page

Ca alternativa puteti folosi si editorul de text notepad++, care este gratuit si in care puteti verifica daca fisierul are setat corect tipul de codificare.
cmd – Chcp-change region or language code page

Acum nu mai ramane decat sa executam fisierul copy.bat. Dupa cum se vede in acest fisier am pus si comanda de schimbarea a cod page-ului, just in case 🙂 .
Iar rezultatul este:
cmd – Chcp-change region or language code page

In unele cazuri este suficient ca fisierul .bat sa fie corect codificat, chiar daca cod page-ul nu este setat specific.

Altfel daca nu am fi avut cod page-ul corect, sau fisierul copy.bat codificarea corect facuta, rezultatul ar fi fost de genul:
cmd – Chcp-change region or language code page

Mai multe informatii legat de comanda chcp si cod page-uri gasiti pe site-ul Microsoft.

Leave a Reply

Your email address will not be published. Required fields are marked *

This site uses Akismet to reduce spam. Learn how your comment data is processed.