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


30

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

Я спробував змінити кодування в Notepad ++, але він стверджує, що вони вже є в кодуванні UTF-8, що, здається, є правильним.

Що мені потрібно зробити, щоб ці файли працювали належним чином?


@luu моє запитання стосується блокнота ++ конкретно
канадський Лука REINSTATE MONICA

Зауважте, що звичайний Блокнот, зберігаючи за допомогою UTF8, не дозволяє зберігати без BOM, і додасть ці символи.
dmcontador

Відповіді:


26

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

У Блокноті ++ спробуйте кодувати його як "UTF-8 без BOM" або як звичайний ASCII. Я думаю, що використання BOM для UTF-8 не рекомендується з цієї причини, це не зовсім назад, сумісне з ASCII.


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

Потім я відкрив цей файл у «Блокноті ++» і перевірив кодування в правому нижньому куті, де ANSI було прочитано як UTF-8 . Я не знаю, чому це додає останній шматочок, але, здається, він працює зараз.


ANSI насправді не є кодуванням. Імовірно, це стосується кодової сторінки вашої системи Windows за замовчуванням . Це залежатиме від однієї системи до іншої, залежно від конфігурації.
Коді Грей,

Це неправильно. BOM - це набір символів, що кодує артефакт.
Thorbjørn Ravn Andersen

@ ThorbjørnRavnAndersen Хто невірний, я чи Коді?
Канадський Люк ВІДНОВЛЕННЯ МОНИЦИ
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.