Các ký tự lạ (╗┐╗┐) khi bắt đầu một tệp bó [trùng lặp]


30

Tôi đang làm việc với các tệp bó trong Windows, sử dụng cả Notepad và Notepad ++. Khi tôi chạy các tệp bó, tất cả bắt đầu bằng @echo off, tôi thấy dòng đầu tiên (khi chạy trên hai máy riêng biệt) đọc ´╗┐@echo offvà sau đó tất cả các dòng REM bên dưới cũng xuất hiện.

Tôi đã thử thay đổi mã hóa trong Notepad ++, nhưng nó tuyên bố rằng chúng đã ở mã hóa UTF-8, có vẻ như là chính xác.

Tôi cần làm gì để các tệp này chạy đúng?


@luu câu hỏi của tôi là về notepad ++ cụ thể
Canada Luke REINSTATE MONICA

Lưu ý rằng Notepad thông thường, khi lưu bằng UTF8, không cho phép lưu mà không có BOM và sẽ thêm các ký tự đó.
dmcontador

Câu trả lời:


26

Dường như mã hóa DOS ASCII của Dấu thứ tự Byte cho UTF-8 (0xEF 0xBB 0xBF): http://en.wikipedia.org/wiki/Byte_order_mark

Trong Notepad ++, hãy thử mã hóa thành "UTF-8 không có BOM" hoặc ASCII đơn giản. Tôi nghĩ rằng việc sử dụng BOM cho UTF-8 không được khuyến khích vì lý do này, nó không tương thích chính xác với ASCII.


2
Hoàn toàn đúng, ngoại trừ 'DOS ASCII' là mã DOS trang 850, như được thể hiện bằng thí nghiệm trong Python:>>> print u'\ufeff'.encode('utf8').decode('cp850') ´╗┐
deltab

@deltab À, tìm tốt. Tôi không chắc mã hóa được gọi cụ thể là gì, chỉ là tôi đã không thấy các ký tự dòng nghệ thuật ╗┐kể từ thời MS-DOS 5 / Windows 3.11. Windows hiện đại phải chạy các tệp bó với mã hóa đó để tương thích?
baochan

1
Tôi gặp phải điều này khi sử dụng Visual Studio để tạo một tệp văn bản mới.
Sam Goldberg

9

Hóa ra nó cần phải được đặt thành mã hóa ANSI để hoạt động chính xác. Để thiết lập điều này, tôi đã chọn Mã hóa -> Mã hóa trong ANSI .

Để tìm ra điều này, tôi đã cố gắng tạo một tệp bó từ dòng lệnh.

echo @echo off > batch.bat
echo REM Some comment... >> batch.bat
echo echo Hello world! >> batch.bat

Sau đó tôi đã mở tệp này trong Notepad ++ và kiểm tra mã hóa ở góc dưới bên phải, đọc ANSI là UTF-8 . Tôi không biết tại sao nó thêm bit cuối cùng, nhưng nó dường như hoạt động ngay bây giờ.


ANSI không thực sự là một mã hóa. Có lẽ nó đề cập đến trang mã mặc định của hệ thống Windows của bạn . Điều đó sẽ thay đổi từ hệ thống này sang hệ thống khác, tùy thuộc vào cấu hình.
Cody Grey

Điều này LAF không đúng. BOM là một tạo tác mã hóa bộ ký tự.
Thorbjørn Ravn Andersen

@ ThorbjørnRavnAndersen Ai không đúng, tôi hay Cody?
Luke Luke REINSTATE MONICA của Canada
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.