38

I am working with batch files in Windows, using both Notepad, and Notepad++. When I run the batch files, which all start with @echo off, I see the first line (when running on two separate machines) reading ´╗┐@echo off, and then all the REM lines below it appear as well.

I have tried changing the encoding in Notepad++, but it claims they are already at UTF-8 encoding, which appears to be correct.

What do I need to do to get these files to run properly?

2
  • @luu my question is about notepad++ specifically Mar 25, 2017 at 4:24
  • Note that regular Notepad, when saving with UTF8, does not allow to save without BOM, and will add those characters.
    – dmcontador
    Sep 20, 2019 at 6:11

2 Answers 2

37

It looks like the DOS ASCII encoding of the Byte Order Mark for UTF-8 (0xEF 0xBB 0xBF): http://en.wikipedia.org/wiki/Byte_order_mark

In Notepad++ try encoding it as "UTF-8 Without BOM" or as plain ASCII. I think the use of BOM for UTF-8 is discouraged for this reason, it's not exactly backwards compatible with ASCII.

3
  • 2
    Absolutely right, except the 'DOS ASCII' is DOS code page 850, as shown by experimention in Python: >>> print u'\ufeff'.encode('utf8').decode('cp850') ´╗┐
    – deltab
    Jun 17, 2014 at 6:00
  • @deltab Ah, good find. I wasn't sure what the encoding was specifically called, just that I hadn't seen the line-art characters ╗┐ since the days of MS-DOS 5/Windows 3.11. Modern Windows must run batch files with that encoding for compatibility?
    – baochan
    Jun 17, 2014 at 13:34
  • 2
    I ran into this when using Visual Studio to create a new text file. Mar 7, 2017 at 18:55
14

Turns out it needs to be set to ANSI encoding to work properly. To set this, I chose Encoding->Encode in ANSI.

To figure this out, I tried to create a batch file from the command line.

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

I then opened this file up in Notepad++, and checked the encoding in the lower right corner, which read ANSI as UTF-8. I don't know why it adds that last bit, but it seems to work now.

3
  • ANSI is not really an encoding. Presumably it refers to your Windows system's default code page. That will vary from one system to another, depending on configuration. Jun 17, 2014 at 8:11
  • This is not correct. The BOM is a character set encoding artifact. Jun 17, 2014 at 8:20
  • @ThorbjørnRavnAndersen Who's incorrect, me or Cody? Jun 17, 2014 at 15:08

Not the answer you're looking for? Browse other questions tagged .