批处理文件开头的奇怪字符(´╗┐)[重复]


30

我正在Windows中使用记事本和Notepad ++处理批处理文件。当我运行所有以开头的批处理文件时@echo off,我看到第一行(当在两台不同的计算机上运行时)读取´╗┐@echo off,然后它下面的所有REM行也都出现了。

我尝试过更改Notepad ++中的编码,但是它声称它们已经采用UTF-8编码,这似乎是正确的。

我需要怎么做才能使这些文件正常运行?


@luu我的问题是关于记事本+特别
加拿大卢克恢复MONICA

请注意,使用UTF8保存时,常规记事本不允许在没有BOM的情况下保存,并将添加这些字符。
dmcontador

Answers:


26

看起来像UTF-8的字节顺序标记的DOS ASCII编码(0xEF 0xBB 0xBF)http : //en.wikipedia.org/wiki/Byte_order_mark

在Notepad ++中,尝试将其编码为“ UTF-8 Without BOM”或纯ASCII。我认为出于这个原因,不建议将BOM用于UTF-8,因为它与ASCII并不完全向后兼容。


2
绝对正确,除了“ DOS ASCII”是DOS代码页850,如Python中的实验所示:>>> print u'\ufeff'.encode('utf8').decode('cp850') ´╗┐
deltab 2014年

@deltab啊,很好找到。我不知道编码的具体含义,只是╗┐自从MS-DOS 5 / Windows 3.11时代以来我就没有看到过线条艺术的字符。为了兼容,现代Windows必须运行具有该编码的批处理文件吗?
baochan 2014年

1
使用Visual Studio创建新的文本文件时,我遇到了这个问题。
山姆·戈德堡

9

事实证明,需要将其设置为ANSI编码才能正常工作。要进行设置,我选择ANSI中的Encoding- > Encode

为了解决这个问题,我尝试从命令行创建一个批处理文件。

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

然后,我在Notepad ++中打开了该文件,并检查了右下角的编码,该编码将ANSI读取为UTF-8。我不知道为什么要加上最后一点,但现在似乎可以了。


ANSI并不是真正的编码。大概是指Windows系统的默认代码页。从一个系统到另一个系统,这取决于配置。
科迪·格雷

这是不正确的。BOM是字符集编码工件。
托尔比约恩Ravn的安德森

@ThorbjørnRavnAndersen是谁,我还是科迪?
加拿大卢克REINSTATE MONICA 2014年
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.