Ketika mengeksekusi file tertentu (terutama batch) menggunakan PsExec saya mendapatkan simbol ́╗┐ 'aneh ini sebelum perintah saya. Pikiran awal saya adalah, bahwa saya menggunakan pengkodean yang salah, tetapi setelah memeriksa, saya menyadari bahwa semua file saya menggunakan UTF-8.
25
Jawaban:
Ini memiliki dua penyebab:
cmd.exe tidak mendukung UTF-8. Itu selalu menggunakan salah satu pengkodean byte tunggal yang sering disebut "OEM" - cp437, cp775, dan sebagainya, tergantung pada pengaturan regional sistem.
(Saya berharap untuk mendukung UTF-16 juga, tetapi ternyata tidak; bahkan jika saya menambahkan BOM UTF-16.)
Editor teks Anda menambahkan "tanda urutan byte" (byte
EF
BB
BF
) UTF-8 ke awal semua file UTF-8.Ketika cmd.exe membaca skrip Anda, ia tidak tahu apa yang harus dilakukan dengan tanda - ia melihat BOM sebagai tiga karakter cp437 biasa,,
’
╗
┐
dan mencoba menggunakannya sebagai bagian dari nama perintah.Konfigurasikan editor Anda untuk berhenti menambahkan BOM ke file yang disandikan UTF-8. (Itu hanya masuk akal di UTF-16, dan sangat tidak berguna di UTF-8.)
uh
apa
sumber
Untuk menjawab @ dsolimano lebih lanjut , jika Anda secara khusus menggunakan Visual Studio , dan dalam kasus saya ini 2013 , saya memperbaikinya dengan melakukan hal berikut:
Sekarang, ketika Anda membuka file .bat dari dalam Visual Studio , Anda awalnya akan diminta dengan:
Anda akan ingin menelusuri opsi sampai Anda datang ke opsi DOS bahasa Anda:
Klik OK untuk menyelesaikan membuka file.
Ok, meskipun seharusnya sudah cukup jelas pada saat ini, jika Anda dapat melihat

karakter di awal file Anda, sebaiknya Anda menghapusnya dan menyimpan file, sekarang dengan pengkodean yang benar. Inilah yang mencegah Anda diminta lagi di lain waktu.Dengan semua itu di tempat, Anda akan senang mengetahui bahwa Anda sekarang dapat melihat , mengedit , dan menyimpan file .bat Anda dari dalam Visual Studio sehingga cmd.exe tidak lagi memberi Anda kesalahan keji yang disebutkan sebelumnya:
sumber
Itu adalah Tanda Orde Unicode Byte . Cmd.exe tidak memahaminya. Jika Anda menyimpan kembali file Anda di Notepad dengan pengkodean ANSI, itu akan memperbaiki masalah.
Misalnya, saya membuat file batch ini:
Pertama saya simpan dengan pengkodean UTF-8
Kemudian dengan Unicode
Dan akhirnya dengan ANSI
sumber
Seperti yang dijelaskan sebelumnya, karakter ini adalah karakter unicode BOM (Byte Order Mark) yang digunakan sebagai tanda tangan dan cmd.exe tidak dikenali.
Anda dapat menghapusnya dengan aman dengan berbagai cara.
Saya menemukan sangat mudah dilakukan sebagai berikut:
sumber