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?


@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.


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.


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
Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.