Karakter aneh (´╗┐) pada awal file batch [duplikat]

30

Saya bekerja dengan file batch di Windows, menggunakan Notepad, dan Notepad ++. Ketika saya menjalankan file batch, yang semuanya dimulai dengan @echo off, saya melihat baris pertama (ketika dijalankan pada dua mesin terpisah) membaca ´╗┐@echo off, dan kemudian semua garis REM di bawahnya muncul juga.

Saya telah mencoba mengubah pengkodean di Notepad ++, tetapi mengklaim mereka sudah berada di pengkodean UTF-8, yang tampaknya benar.

Apa yang harus saya lakukan agar file-file ini berjalan dengan baik?

Luke Kanada REINSTATE MONICA
sumber
@luu pertanyaan saya adalah tentang notepad ++ secara khusus
Luke Kanada. Reinstate MONICA
Perhatikan bahwa Notepad biasa, saat menyimpan dengan UTF8, tidak memungkinkan untuk menyimpan tanpa BOM, dan akan menambahkan karakter tersebut.
dmcontador

Jawaban:

26

Sepertinya pengkodean DOS ASCII dari Byte Order Mark untuk UTF-8 (0xEF 0xBB 0xBF): http://en.wikipedia.org/wiki/Byte_order_mark

Di Notepad ++, coba enkode sebagai "UTF-8 Tanpa BOM" atau sebagai ASCII. Saya pikir penggunaan BOM untuk UTF-8 tidak disarankan karena alasan ini, itu tidak sepenuhnya kompatibel dengan ASCII.

baochan
sumber
2
Benar sekali, kecuali 'DOS ASCII' adalah kode DOS halaman 850, seperti yang ditunjukkan oleh eksperimen dengan Python:>>> print u'\ufeff'.encode('utf8').decode('cp850') ´╗┐
deltab
@deltab Ah, temukan baik-baik. Saya tidak yakin apa pengkodean secara khusus disebut, hanya saja saya belum melihat karakter seni garis ╗┐sejak zaman MS-DOS 5 / Windows 3.11. Windows modern harus menjalankan file batch dengan pengkodean itu untuk kompatibilitas?
baochan
1
Saya mengalami ini ketika menggunakan Visual Studio untuk membuat file teks baru.
Sam Goldberg
9

Ternyata itu perlu diatur ke encoding ANSI agar berfungsi dengan baik. Untuk mengatur ini, saya memilih Encoding -> Encode di ANSI .

Untuk mengetahuinya, saya mencoba membuat file batch dari baris perintah.

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

Saya kemudian membuka file ini di Notepad ++, dan memeriksa encoding di sudut kanan bawah, yang membaca ANSI sebagai UTF-8 . Saya tidak tahu mengapa itu menambahkan bit terakhir, tetapi tampaknya berfungsi sekarang.

Luke Kanada REINSTATE MONICA
sumber
ANSI sebenarnya bukan encoding. Agaknya itu merujuk ke halaman kode default sistem Windows Anda . Itu akan bervariasi dari satu sistem ke sistem lainnya, tergantung pada konfigurasi.
Cody Grey
Ini tidak benar. BOM adalah artefak pengodean set karakter.
Thorbjørn Ravn Andersen
@ ThorbjørnRavnAndersen Siapa yang salah, saya atau Cody?
Luke Kanada REINSTATE MONICA