อักขระแปลก ๆ (´╗┐) ที่จุดเริ่มต้นของแบตช์ไฟล์ [ซ้ำ]


30

ฉันทำงานกับแบตช์ไฟล์ใน Windows โดยใช้ทั้ง Notepad และ Notepad ++ เมื่อฉันเรียกใช้แบตช์ไฟล์ซึ่งเริ่มต้นด้วย@echo offฉันเห็นบรรทัดแรก (เมื่อเรียกใช้บนเครื่องที่แยกกันสองเครื่อง) อ่าน´╗┐@echo offแล้วบรรทัด REM ทั้งหมดด้านล่างจะปรากฏขึ้นเช่นกัน

ฉันได้ลองเปลี่ยนการเข้ารหัสใน Notepad ++ แต่มันอ้างว่าพวกเขากำลังเข้ารหัส UTF-8 อยู่แล้วซึ่งดูเหมือนจะถูกต้อง

ฉันต้องทำอย่างไรเพื่อให้ไฟล์เหล่านี้ทำงานอย่างถูกต้อง


@luu คำถามของฉันเกี่ยวกับ notepad ++ โดยเฉพาะ
Canadian Luke ติดตั้ง MONICA ใหม่

โปรดทราบว่า Notepad ปกติเมื่อบันทึกด้วย UTF8 ไม่อนุญาตให้บันทึกโดยไม่มี BOM และจะเพิ่มอักขระเหล่านั้น
dmcontador

คำตอบ:


26

ดูเหมือนว่าการเข้ารหัส DOS ASCII ของ Mark By Order Order สำหรับ UTF-8 (0xEF 0xBB 0xBF): http://en.wikipedia.org/wiki/Byte_order_mark

ใน Notepad ++ ลองเข้ารหัสเป็น "UTF-8 Without BOM" หรือ ASCII ธรรมดา ฉันคิดว่าการใช้ BOM สำหรับ UTF-8 ไม่ได้รับการสนับสนุนด้วยเหตุผลนี้มันไม่เข้ากันได้กับ ASCII


2
ถูกต้องอย่างแน่นอนยกเว้น 'DOS ASCII' คือรหัส DOS หน้า 850 ดังที่แสดงโดยการทดลองใน Python:>>> print u'\ufeff'.encode('utf8').decode('cp850') ´╗┐
deltab

@deltab Ah, ค้นหาที่ดี ฉันไม่แน่ใจว่าการเข้ารหัสนั้นเรียกว่าอะไรโดยเฉพาะ แต่ฉันไม่ได้เห็นตัวละครแนวอาร์ต╗┐ตั้งแต่วันที่ MS-DOS 5 / Windows 3.11 Windows สมัยใหม่ต้องรันไฟล์แบตช์ด้วยการเข้ารหัสเพื่อความเข้ากันได้?
baochan

1
ฉันพบปัญหานี้เมื่อใช้ Visual Studio เพื่อสร้างไฟล์ข้อความใหม่
Sam Goldberg

9

ปรากฎว่าจำเป็นต้องตั้งค่าการเข้ารหัสANSIเพื่อให้ทำงานได้อย่างถูกต้อง การตั้งค่านี้ผมเลือกการเข้ารหัส -> เข้ารหัสใน ANSI

เพื่อหาสิ่งนี้ฉันพยายามสร้างแบตช์ไฟล์จากบรรทัดคำสั่ง

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

จากนั้นผมก็เปิดไฟล์นี้ขึ้นใน Notepad ++ และการตรวจสอบการเข้ารหัสที่มุมขวาล่างที่อ่านANSI เป็น UTF-8 ฉันไม่รู้ว่าทำไมมันเพิ่มบิตสุดท้าย แต่ดูเหมือนว่าจะทำงานตอนนี้


ANSI ไม่ใช่การเข้ารหัส สมมุติว่ามันหมายถึงหน้ารหัสเริ่มต้นของระบบ Windows ของคุณ ที่จะแตกต่างจากระบบหนึ่งไปอีกระบบหนึ่งขึ้นอยู่กับการกำหนดค่า
โคดี้เกรย์

สิ่งนี้ไม่ถูกต้อง BOM เป็นชุดการเข้ารหัสสิ่งประดิษฐ์
Thorbjørn Ravn Andersen

@ ThorbjørnRavnAndersenใครที่ไม่ถูกต้องฉันหรือโคดี้?
ลุคแคนาดาติดตั้งใหม่ MONICA
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.