バッチファイルの先頭にある奇妙な文字(´╗┐)[複製]


30

メモ帳とメモ帳++の両方を使用して、Windowsでバッチファイルを操作しています。すべてがで始まるバッチファイルを実行すると@echo off、最初の行(2台の異なるマシンで実行している場合)が読み取られ´╗┐@echo off、その下のすべてのREM行も表示されます。

Notepad ++でエンコーディングを変更しようとしましたが、すでにUTF-8エンコーディングであり、正しいようです。

これらのファイルを適切に実行するには、何をする必要がありますか?


@luu私の質問は、特にnotepad ++についてです
カナダのルークレインステートモニカ

UTF8で保存する場合、通常のメモ帳ではBOMなしで保存することはできず、これらの文字が追加されることに注意してください。
dmcontador

回答:


26

UTF-8のバイトオーダーマークのDOS ASCIIエンコーディングのように見えます(0xEF 0xBB 0xBF)http : //en.wikipedia.org/wiki/Byte_order_mark

Notepad ++で、「BOMなしのUTF-8」またはプレーンASCIIとしてエンコードしてみてください。この理由から、UTF-8でのBOMの使用はお勧めできません。ASCIIとの完全な下位互換性はありません。


2
絶対的に正しい、Pythonでexperimentionによって示されるように'DOSのASCII'であるDOSコードページ850、除く:>>> print u'\ufeff'.encode('utf8').decode('cp850') ´╗┐
deltab

@deltabああ、良い発見。╗┐MS-DOS 5 / Windows 3.11の時代からラインアートキャラクターを見ていなかったというだけで、エンコーディングの具体的な名前はわかりませんでした。最新のWindowsでは、互換性のためにそのエンコーディングでバッチファイルを実行する必要がありますか?
baochan 14年

1
Visual Studioを使用して新しいテキストファイルを作成するときに、これに遭遇しました。
サムゴールドバーグ

9

正しく動作するにはANSIエンコーディングに設定する必要があることがわかりました。これを設定するには、エンコード -> ANSIでエンコードを選択しました

これを理解するために、コマンドラインからバッチファイルを作成しようとしました。

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

次に、このファイルをNotepad ++で開き、右下隅のエンコードを確認しました。これは、ANSIをUTF-8として読み取ります。なぜ最後のビットが追加されるのかわかりませんが、今はうまくいくようです。


ANSIは実際にはエンコードではありません。おそらく、Windowsシステムのデフォルトコードページを指します。構成に応じて、システムごとに異なります。
コーディグレー14年

これは正しくありません。BOMは、文字セットエンコードアーティファクトです。
トールビョーンラヴンアンデルセン14年

@ThorbjørnRavnAndersen私とコーディは誰が間違っていますか?
カナダのルークレインステートモニカ14年
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.