Seltsame Zeichen (´╗┐) am Anfang einer Batch-Datei [duplizieren]

30

Ich arbeite mit Batch-Dateien in Windows, mit Notepad und Notepad ++. Wenn ich die Batch-Dateien ausführe, mit denen alle beginnen @echo off, wird in der ersten Zeile (bei Ausführung auf zwei separaten Computern) das Lesen angezeigt ´╗┐@echo off, und dann werden auch alle REM-Zeilen darunter angezeigt.

Ich habe versucht, die Codierung in Notepad ++ zu ändern, aber es wird behauptet, dass es sich bereits um UTF-8-Codierung handelt, was korrekt zu sein scheint.

Was muss ich tun, damit diese Dateien ordnungsgemäß ausgeführt werden?

Der Kanadier Luke REINSTATE MONICA
quelle
@luu meine Frage ist über Notizblock ++ speziell
Kanadier Luke REINSTATE MONICA
Beachten Sie, dass der normale Editor beim Speichern mit UTF8 das Speichern ohne Stückliste nicht zulässt und diese Zeichen hinzufügt.
dmcontador

Antworten:

26

Es sieht aus wie die DOS-ASCII-Codierung der Byte Order Mark für UTF-8 (0xEF 0xBB 0xBF): http://en.wikipedia.org/wiki/Byte_order_mark

Versuchen Sie in Notepad ++, es als "UTF-8 Without BOM" oder als einfaches ASCII-Format zu codieren. Ich denke, die Verwendung von BOM für UTF-8 wird aus diesem Grund abgeraten, es ist nicht genau abwärtskompatibel mit ASCII.

Baochan
quelle
2
Absolut richtig, mit Ausnahme von 'DOS ASCII' ist DOS-Codepage 850, wie durch Experimentieren in Python gezeigt:>>> print u'\ufeff'.encode('utf8').decode('cp850') ´╗┐
DeltaB,
@ Deltab Ah, gute Entdeckung. Ich war mir nicht sicher, wie die Codierung speziell genannt wurde, nur dass ich die Strichzeichnungen ╗┐seit den Tagen von MS-DOS 5 / Windows 3.11 nicht mehr gesehen hatte. Modernes Windows muss Batch-Dateien mit dieser Kodierung ausführen, um Kompatibilität zu gewährleisten.
Baochan
1
Ich bin darauf gestoßen, als ich mit Visual Studio eine neue Textdatei erstellt habe.
Sam Goldberg
9

Es hat sich herausgestellt, dass die ANSI- Codierung eingestellt sein muss, um ordnungsgemäß zu funktionieren. Um dies einzustellen, habe ich Encoding -> Encode in ANSI gewählt .

Um dies herauszufinden, habe ich versucht, eine Batch-Datei über die Befehlszeile zu erstellen.

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

Ich öffnete diese Datei dann in Notepad ++ und überprüfte die Codierung in der unteren rechten Ecke, die ANSI als UTF-8 lautete . Ich weiß nicht, warum es das letzte bisschen hinzufügt, aber es scheint jetzt zu funktionieren.

Der Kanadier Luke REINSTATE MONICA
quelle
ANSI ist eigentlich keine Kodierung. Vermutlich bezieht es sich auf die Standard- Codepage Ihres Windows-Systems . Dies ist je nach Konfiguration von System zu System unterschiedlich.
Cody Grey
Das ist nicht richtig. Die Stückliste ist ein Zeichensatzkodierungsartefakt.
Thorbjørn Ravn Andersen
@ ThorbjørnRavnAndersen Wer ist falsch, ich oder Cody?
Kanadier Luke REINSTATE MONICA