Странные символы (´╗┐) в начале пакетного файла [дубликаты]

30

Я работаю с пакетными файлами в Windows, используя как Блокнот, так и Блокнот ++. Когда я запускаю командные файлы, которые все начинаются с @echo off, я вижу первую строку (при работе на двух разных машинах), читающую ´╗┐@echo off, а затем появляются также все строки REM под ним.

Я попытался изменить кодировку в Notepad ++, но он утверждает, что они уже находятся в кодировке UTF-8, что представляется правильным.

Что мне нужно сделать, чтобы эти файлы работали правильно?

Канадский Люк ВОССТАНОВИТЬ МОНИКУ
источник
@luu, мой вопрос о блокноте ++, в частности
канадец Люк ОБНОВЛЯЕТ МОНИКУ
Обратите внимание, что обычный Блокнот при сохранении с UTF8 не позволяет сохранять без спецификации, и добавляет эти символы.
dmcontador

Ответы:

26

Это похоже на кодировку DOS ASCII метки порядка байтов для UTF-8 (0xEF 0xBB 0xBF): http://en.wikipedia.org/wiki/Byte_order_mark

В Notepad ++ попробуйте кодировать его как «UTF-8 без спецификации» или как простой ASCII. Я думаю, что использование спецификации для UTF-8 не рекомендуется, потому что она не совсем обратно совместима с ASCII.

baochan
источник
2
Абсолютно верно, за исключением того, что «DOS ASCII» - это кодовая страница DOS 850, как показано экспериментально на Python:>>> print u'\ufeff'.encode('utf8').decode('cp850') ´╗┐
deltab
@deltab Ах, хорошая находка. Я не был уверен, как конкретно была названа кодировка, просто я не видел символов ╗┐штриховой графики со времен MS-DOS 5 / Windows 3.11. Современная Windows должна запускать пакетные файлы с этой кодировкой для совместимости?
Баочан
1
Я столкнулся с этим при использовании Visual Studio для создания нового текстового файла.
Сэм Голдберг,
9

Оказывается, для правильной работы необходимо установить кодировку ANSI . Чтобы установить это, я выбрал Encoding -> Encode in ANSI .

Чтобы понять это, я попытался создать командный файл из командной строки.

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

Затем я открыл этот файл в Notepad ++ и проверил кодировку в правом нижнем углу, которая читала ANSI как UTF-8 . Я не знаю, почему это добавляет этот последний бит, но, похоже, сейчас работает.

Канадский Люк ВОССТАНОВИТЬ МОНИКУ
источник
ANSI на самом деле не кодировка. Предположительно это относится к кодовой странице по умолчанию вашей системы Windows . Это будет варьироваться от одной системы к другой, в зависимости от конфигурации.
Коди Грей
Это не правильно. Спецификация является артефактом кодировки набора символов.
Турбьерн Равн Андерсен
@ ThorbjørnRavnAndersen Кто не прав, я или Коди?
Канадец Люк ОБНОВЛЯЕТ МОНИКУ