Skocz do zawartości

strona kodowa w cmd + telnet


woodywoo

Rekomendowane odpowiedzi

Witam i zwracam się z zapytaniem o pomoc odnośnie mojego problemu. Zacznę może od tego, że podobne tematy o PL znakach w wierszu poleceń widziałem, próbowałem modyfikacji rejestru, zmiany w panelu sterowania itp. Mój problem jest jednak trochę inny i poradzić sobie z nim nie mogę.

 

Gdy odpalę cmd i użyję polecenia chcp - niby wszystko jest okej:

C:\Users\Paweł>chcp

Aktywna strona kodowa: 852

 

ALE. Używam też windowsowej usługi serwera telnetu (tlntsvr.exe) do zdalnego łączenia się z moim komputerem. I cokolwiek bym nie robił, gdy łączę się z komputerem zdalnie z komputera innego, terminal uparcie pokazuje:

 

C:\Users\Pawe>chcp

Aktywna strona kodowa: 1250

 

W zasadzie mógłbym po każdym połączeniu użyć chcp 852, problem jest jednak w tym, że samo ustanowienie połączenia jest kłopotliwe za sprawą polskiego znaku (jak widać) w loginie. Muszę najpierw przestawiać kodowanie terminala na 1250, zalogować się, użyć chcp 852 i przywrócić ustawienia terminala.

 

Znalazłem coś takiego: http://technet.microsoft.com/en-us/library/cc728323%28WS.10%29.aspx to chyba troszkę dotyka problemu, ale dotyczy win2k3 a nie mej wisty ulubionej.

 

 

A w ogóle idealnie by było, gdyby się dało ustawić tę stronę kodową nie tyle na 852 co nawet - jeszcze lepiej - na UTF-8. Gdzieś tam w necie wyszperałem, że chcp 65001 odpowiada UTF-8. Prawda to? Moje testy na szybko zrobione zdają się potwierdzać, gdy w terminalu mam ustawione utf8 i w oknie zdalnego połączenia użyję chcp 65001 wszystko super współgra. Tylko trochę się zraziłem gdy zmodyfikowałem klucz rejestru HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Nls\CodePage\OEMCP na 65001 i po restarcie komputera przywitał mnie bluescreen... więc nie wiem jak to z tym 65001, czy to prawidłowa wartość czy nie.

 

PS.

Pisałem już na SE ale nie zgadniecie co - tam śmierdzi trupem. :| A to tutaj się cały dobytek intelektualny przeniósł widzę :o I bardzo dobrze się stało, jeśli tu ma być lepsza atmosfera :)

Odnośnik do komentarza
Pomoc jest darmowa, ale proszę rozważ przekazanie dotacji na utrzymanie serwisu: klik.

852 dosowski standard cp-852

1250 windowsowski standard cp-1250

65001 UTF-8

nie możesz zrobić *.bat który by odpowiednio odpalał Tobie konsolę?

 

Windows pewnie się tobie sypie bo krzaczy mu się konsola przy kodowaniu innym niż dosowskim ;)

 

BTW. zastanawiał się ktoś dla czego konsola używa cp-852, gdy reszta windowsa cp-1250 (pomijając już fakt istnienia latin2 - standardu polskiego kodowania) :) eh ten m$

Odnośnik do komentarza
BTW. zastanawiał się ktoś dla czego konsola używa cp-852, gdy reszta windowsa cp-1250 (pomijając już fakt istnienia latin2 - standardu polskiego kodowania)

Strona kodowa 852 powstała zdecydowanie wcześniej, chyba jeszcze na podstawie 437 od IBM...

 

From Wikipedia

IBM PC (OEM) code pages

 

These code pages were designed to be compatible with text modes provided by graphics adapters, including VGA compatible text mode, that were used with MS-DOS and its clones. This limited code pages to 256 points, which often include box-drawing characters. Since the original IBM PC code page (number 437) was not really designed for international use, several incompatible variants emerged. Microsoft refers to these as the OEM code pages.

Potem Microsoft utworzył sobie jeszcze strony kodowe ANSI (125x) i inne (właśnie 65001, która jest windowsową implementacją Unicode). Problem w tym, że te strony kodowe nie były dostępne w DOS-ie i z DOS-em zgodne nie były, a w celu zachowania wstecznej kompatybilności w cmd.exe zostały właśnie stare strony kodowe DOS.

 

Z własnych doświadczeń widzę, że DOS-a (i cmd) do wykorzystywania 65001 namówić się nie da, natomiast jeśli przekierujemy sobie dojścia do pliku .txt i potem to odtworzymy Notatnikiem to wszystko się pięknie wyświetli (tak samo przy Windows-1252, a przy 852 w notatniku będą krzaczki). Na odwrót jest w dosowskim EDIT - dobrze wyświetlają się dokumenty wykorzystujące cp-852, reszta się sypie.

 

Wnioski z tego:

 

- dla polskich stron WWW - ISO-8859-2

- dla DOS-a - 852

- dla Windowsa - 1252

- dla intersystemowych zastosowań - Unicode

 

Szanse, żeby to się kiedyś unormowało: praktycznie zerowe, dopóki nie zniknie Wiersz poleceń. ;)

 

--------------------------------------------------------------------------------------------------------------------

 

Z Telnetem jest jeszcze inny problem, systemy od Microsoftu interpretują inaczej znak końca wiersza, niż Uniksy i pochodne (Linux). Te ostatnie wysyłają znak (Line Feed), natomiast Windows i DOS dodaje przed nim dodatkowo znak (Carriage Return). Telnet ma sam dokonywać konwersji dla wybranego systemu, natomiast warto o tym pamiętać.

Odnośnik do komentarza

nie możesz zrobić *.bat który by odpowiednio odpalał Tobie konsolę?

Nie mogę - bo przecież nie zmuszę żadnego .bat, żeby odpalał się w momencie gdy nadchodzi zdalne połączenie. I to w dodatku musiałby odpalić się w oknie reprezentującym tę zdalną sesję. Mało tego - jeszcze przed zalogowaniem by to musiało się stać.

 

 

Problem w tym, że te strony kodowe nie były dostępne w DOS-ie i z DOS-em zgodne nie były, a w celu zachowania wstecznej kompatybilności w cmd.exe zostały właśnie stare strony kodowe DOS.

DOS tak naprawdę niewiele mnie interesuje, nie interesuje mnie też raczej kompatybilność wsteczna. Oby tylko działało prawidłowo połączenie przez telnet do cmd - nawet kosztem braku kompatybilności z dziadkiem DOSem.

 

 

Z Telnetem jest jeszcze inny problem, systemy od Microsoftu interpretują inaczej znak końca wiersza, niż Uniksy i pochodne (Linux). Te ostatnie wysyłają znak <LF> (Line Feed), natomiast Windows i DOS dodaje przed nim dodatkowo znak <CR> (Carriage Return). Telnet ma sam dokonywać konwersji dla wybranego systemu, natomiast warto o tym pamiętać.

Do tego akurat przywykłem bo telnet/ssh stosuję od lat na przeróżnych systemach i jeśli się dobrze klienta telnetu ustawi (w moim przypadku SecureCRT - polecam) to nie jest to problemem.

 

 

Natomiast nadal nie dotykamy sedna sprawy :P Czyli domyślnej strony kodowej dla sesji telnet.

Odnośnik do komentarza
DOS tak naprawdę niewiele mnie interesuje, nie interesuje mnie też raczej kompatybilność wsteczna. Oby tylko działało prawidłowo połączenie przez telnet do cmd - nawet kosztem braku kompatybilności z dziadkiem DOSem.

Wiem, ale Microsoft to jednak interesuje. :)

CMD powstał już w czasach istnienia Windowsów.

 

Natomiast nadal nie dotykamy sedna sprawy :P Czyli domyślnej strony kodowej dla sesji telnet.

A nie łatwiej Ci po prostu wywalić to "ł" z loginu?

Każda nie-łacińska literka prędzej czy później zacznie powodować problemy, niekiedy w zupełnie niespodziewanych okolicznościach. ;)

 

http://serverfault.com/questions/67037/per-user-login-cmd-in-vista

 

Może to Ci coś pomoże, natomiast powoli wkraczam na nieznane mi tereny...

Odnośnik do komentarza

A nie łatwiej Ci po prostu wywalić to "ł" z loginu?

Każda nie-łacińska literka prędzej czy później zacznie powodować problemy, niekiedy w zupełnie niespodziewanych okolicznościach. ;)

Ze zmianą nazwy konta (zwłaszcza takiego funkcjonującego bardzo dłuuugo) też wcale nie jest lepiej i może to mieć różne przykre konsekwencje. Przypominam, że to jest to samo konto co domyślne, wykorzystywane do logowania windows :P Właściwie to nawet nie wiem czy to jest możliwe do wykonania jakimś prostym sposobem. Jeśli zmieniam przez panel sterowania -> konta użytkowników -> zmień swoją nazwę konta, to dzieją się jakieś cuda niewidy. Folder w Users nadal ma nazwę "Paweł" z "ł", telnet nadal wymaga logowania z "ł", na ekranie logowania Visty (tam gdzie jest prośba o wciśnięcie ctrl+alt+del) jestem oznaczony jako - uwaga - "Pawel (Paweł)". Dopiero później gdzieniegdzie pojawia się wersja "Pawel". Podejrzewam, że raz utworzone konto ma nazwę niezmienną, można zmienić tylko nazwę wyświetlaną. No chyba, że jakieś sposoby typu "force" istnieją niedostępne w standardowym panelu sterowania.

Tworzenie konta od nowa to zdecydowanie nie dla mnie, przyzwyczajam się do środowiska, straszliwie je personalizuję (nie mylić z tray-owcami, upiększaczo-upierdliwcami) i przesiadek nie lubię :P Że już o formatowaniu nie wspomnę - zapomniałem prawie jak format wygląda.

Poza tym zmiana nazwy konta to tylko leczenie objawowe, a ono jest fuj. Nadal zostaje potrzeba uruchamiania po każdym logowaniu odpowiedniego polecenia chcp... bo w czasie pracy z terminalem też chciałbym jakoś kulturalnie to kodowanie mieć ustawione.

 

http://serverfault.com/questions/67037/per-user-login-cmd-in-vista

 

Może to Ci coś pomoże, natomiast powoli wkraczam na nieznane mi tereny...

To też zdaje się jest wykonywane dopiero po autoryzacji więc nie pomoże. Nie da się wykonać jakiegokolwiek kodu czy polecenia przed zalogowaniem, bo mógłby go wykonać każdy kto próbuje ustanowić połączenie :P

Odnośnik do komentarza

A lusrmgr.msc - zarządzanie użytkownikami (o ile masz Vistę Business albo Ultimate). Ostatni raz nazwy kont zmieniałem na Windows Server 2003 tą właśnie drogą, nie zauważyłem później żadnych problemów (jak się człowiek kilka razy na prawie 200 kont pomyli to jeszcze nie jest źle :D). Było tam też coś takiego, jak login dla systemów starszych od Windows 2000, dziwne, że tego na Viście nie ma, jak wielu innych rzeczy...

 

Ażeby zmienić nazwę folderu profilu musisz być zalogowany na innym koncie administracyjnym niż jesteś albo użyć płyty bootowalnej

 

1.Logujesz się na inne konto administracyjne albo na konto wbudowanego Administratora (tylko najpierw musisz konto Administratora odblokować np. w lusrmgmt.msc) i zmieniasz nazwę danego folderu profilu na taką jak nazwa konta

2.Poszukaj w kluczu HKLM\Software\Microsoft\Windows NT\CurrentVersion\ProfileList podklucze z numerami odnoszącymi się do tego modyfikowanego profilu i popraw to (rysunek)

usersiay2.th.jpgthpix.gif

 

to co jest w rejestrze musi się zgadzać ze stanem faktycznym na dysku

 

Oczywiście to samo (jak chcesz) można wykonać bootując płytę DVD Visty albo LiveCD i zdalnie to wszystko wykonać...

Odnośnik do komentarza

Niestety - Home Premium.

No to komenda

 

net user Administrator /active:yes

 

Poza tym, naprawdę nie chcę tej nazwy zmieniać bo intuicyjnie wydaje mi się to rozwiązaniem dość inwazyjnym o nieprzewidzianych skutkach dla już zainstalowanych aplikacji.

Mylisz się.Dla aplikacji (pewnie ci chodzi o informacje o rejestracji programów) interesuje tylko SID użytkownika dla którego dokonano rejestrację.Ta procedura nie zmienia SID użytkownika.Rejestr systemu operuje wyłącznie SID użytkownika,rzeczywiste czy wyświetlane nazwy konta rejestr nie operuje poza gałęzią SAM ale do tej gałęzi żadne zainstalowane aplikacje czy łaty nie mają dostępu.

Odnośnik do komentarza

Mylisz się.Dla aplikacji (pewnie ci chodzi o informacje o rejestracji programów) interesuje tylko SID użytkownika dla którego dokonano rejestrację.

A to nie zależy od tego jak sobie jakiś programista aplikację zaprogramował? :P Jeden zrobi tak, drugi inaczej. Chodzi też o przeróżne ścieżki dostępu ustawiane w programach, na przykład "pliki konfiguracyjne przechowuj w ...", "dane profilu przechowuj w ...", "save'y gry przechowuj w ..." i tym podobne. Jak są użyte zmienne systemowe to pół bidy, a jak nie są to trzeba podmieniać ręcznie.

 

No ale idąc dalej - to rozwiązuje problem logowania. A co z kodowaniem samym w sobie? Pozostaje mi tylko wpisywać po każdym połączeniu ręcznie chcp 852 / chcp 65001? Naprawdę nigdzie nie da się tego ustawić? :( Na chłopski rozum - jeśli za każdym razem jest tam 1250 a nie przypuśćmy 0, NULL, czy losowa wartość, to znaczy, że gdzieś ta wartość musi być przechowywana :o

Odnośnik do komentarza
  • 3 tygodnie później...

Nie wiem, nie znam się, nie orientuję się... zarobiony nie jestem ;)

IMHO najprościej byłoby pozbyć się tej polskiej literki w loginie, nie od wczoraj wiadomo, że to tylko problemy stwarza. Jak dla mnie, zmiana nazwy użytkownika nie wywoła problemów, nazwa katalogu usera nie zmienia się (?).

Edytowane przez picasso
21.02.2011 - Temat zostaje zamknięty. Wygasła jego żywotność ustalona zasadami. //picasso
Odnośnik do komentarza
Gość
Ten temat został zamknięty. Brak możliwości dodania odpowiedzi.
  • Ostatnio przeglądający   0 użytkowników

    • Brak zarejestrowanych użytkowników przeglądających tę stronę.
×
×
  • Dodaj nową pozycję...