Pracuję z plikami wsadowymi w systemie Windows, używając zarówno Notatnika, jak i Notatnika ++. Kiedy uruchamiam pliki wsadowe, które zaczynają się od @echo off
, widzę pierwszy wiersz (przy uruchomieniu na dwóch osobnych maszynach) czytający ´╗┐@echo off
, a następnie wszystkie wiersze REM poniżej.
Próbowałem zmienić kodowanie w Notepad ++, ale twierdzi, że są już w kodowaniu UTF-8, co wydaje się poprawne.
Co muszę zrobić, aby te pliki działały poprawnie?
Odpowiedzi:
Wygląda jak kodowanie DOS ASCII Byte Order Mark dla UTF-8
(0xEF 0xBB 0xBF)
: http://en.wikipedia.org/wiki/Byte_order_markW Notepad ++ spróbuj zakodować go jako „UTF-8 bez BOM” lub jako zwykły ASCII. Myślę, że korzystanie z BOM dla UTF-8 jest odradzane z tego powodu, nie jest on dokładnie zgodny wstecz z ASCII.
źródło
>>> print u'\ufeff'.encode('utf8').decode('cp850') ´╗┐
╗┐
od czasów MS-DOS 5 / Windows 3.11. Współczesny system Windows musi uruchamiać pliki wsadowe z tym kodowaniem, aby zapewnić zgodność?Okazuje się, że do poprawnego działania należy ustawić kodowanie ANSI . Aby to ustawić, wybrałem Kodowanie -> Koduj w ANSI .
Aby to rozgryźć, próbowałem utworzyć plik wsadowy z wiersza polecenia.
Następnie otworzyłem ten plik w Notepad ++ i sprawdziłem kodowanie w prawym dolnym rogu, które czytało ANSI jako UTF-8 . Nie wiem, dlaczego dodaje to ostatnie, ale wydaje się, że teraz działa.
źródło