LoginSignup
1
0

バッチファイルの文字化け'∩╗┐'の対応方法について

Last updated at Posted at 2024-03-28

宣伝

Flutterに関する技術ブログを運営しています。
ご興味のある方は、よかったらご覧ください♪
https://flutterdevelop.blog/

本題

バッチファイルを実行すると、以下のようなエラーが発生しました。

'' is not recognized as an internal or external command,
operable program or batch file.

要約すると、「そんなコマンド知らん」です。
もちろん"∩╗┐"という文字はバッチファイルに入れいていません。
どうやら何かが文字化けし、正しいコマンドが実行されていないようです。

事象

このエラーが発生した状況は以下です。
 
ファイル文字コード:UTF-8
環境:Windows

バッチファイルをWindows既存アプリ「メモ帳」保存すると
1行目のコードに対し、該当の文字化けが発生します。

問題

バッチファイルの1行目のコードが正常に実施されません。
2行目以降は正常に実施されますが、意図した結果にならない可能性があります。
 
私の場合は「@echo off」を1行目に設定していたため、
処理自体は問題なく実施されましたが、「@echo off」が機能していないため、
全てのコメントが表示されてしまいました。

原因

全てのWindowsで起こる事象ではありませんが、
環境により「メモ帳」で保存すると、BOM付きのテキストデータに変換されます。
BOMとは、"Byte Order Mark"の略で、詳しくは以下サイトを参照ください。
参考サイト:UTF-8のBOM付き・BOM無しの違いと確認方法

BOM付きとなるとUTF-8データの場合、先頭3バイトに見えないデータが付与されています。
しかしバッチファイルはこれをコードと認識してしまうため、上記のエラーが発生します。
 

対策

検索すれば色々と方法はあったのですが、
個人的に以下の方法が最も簡単だった方法をご紹介します。
 

方法1

1.サクラエディタで対象のバッチファイルを開きます。

2.ファイルから「名前を付けて保存」をクリックし、
  以下の「BOM」のチェックを外します。
image.png
 
3.「保存」をクリックすると、BOMが除去された内容で保存されます。

方法2

この方法はエラーを取り除く方法ではありませんが、
状況により、サクラエディタが使用できない場面での対象に有効です。
 
方法としては単純で、1行目のコードがエラーとなるならば、1行目に何も書かなければ、解決できます。

-空白行-
@echo off

ただし、先頭3文字にBOMが付与されているため、
バッチ実行時、最初に挙げたエラーは発生しますがそれだけで済みます。
 

以上が対応方法になります。
参考になれば幸いです。
 

1
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
0