2017-08-22 1 views

Antwort

1

Meine bisherige Lösung, die die Batch-Skript in Unicode UTF-8 without BOM und codepage 65001 spart scheint sowohl mit Konsole Probleme zu haben und C Laufzeit als Benutzer @eryksun erwähnt.

@eryksun erwähnt auch in unserem chat:

Wie ich schon sagte, alle die Codepages sind Ober von ASCII, also was ich meine ist, den Rest des Batch-Skript zu begrenzen, um nur ASCII-Zeichen, weil Sie können unabhängig von der Codepage der Konsole korrekt dekodiert werden.


Unicode UTF-8

chcp 65001 
echo ¯¯¯¯¯ 
chcp [Original Codepage] 

Erklärung von @eryksun:

CMD Zeile decodiert Linie, dh Sie zu Codepage 65001 nur für die Nicht-ASCII ändern Zeilen und wechseln Sie dann zurück zur ursprünglichen Codepage.

Wenn Sie keinen Editor wie Notepad ++ verwenden, der UTF-8 ohne BOM (Byte Order Mark) speichern kann, sieht CMD die erste Zeile als Fehler, da er eine BOM nicht ignorieren kann.

+0

CMD verwendet die herkömmliche Codepage der Konsole zum Codieren und Decodieren von Dateien (andernfalls wird Unicode verwendet). Die Batch-Datei muss als UTF-8 * ohne BOM * gespeichert werden. Ich empfehle nur die Konsole Codepage vorübergehend zu ändern, um die Zeichenfolge in eine Umgebungsvariable zu lesen. Speichern Sie die ursprüngliche Codepage und stellen Sie sie wieder her, nachdem die Variable festgelegt wurde. Andernfalls begrenzen Sie die Batch-Datei auf 7-Bit-ASCII-Zeichen. Vermeiden Sie es, die Konsole im UTF-8-Modus zu lassen, da sowohl die Konsole als auch die C-Laufzeit Probleme mit der Verwendung von Codepage 65001 haben, was sich auf Konsolenanwendungen auswirkt, die die ältere Codepage-API verwenden. – eryksun

+0

Oh, okay. Ist 7-Bit ASCII 65000 oder etwas anderes? Speichern ohne Stückliste ist natürlich möglich, würde aber einen "fortgeschritteneren" Texteditor erfordern. Vielleicht sollte ich stattdessen in ASCII speichern. – SteveFest

+0

Stellt sich heraus, ich habe eine schnelle Suche und die Codepage ist "20127" statt "65000". – SteveFest

Verwandte Themen