「全角文字」タグアーカイブ

PowerShellの構文エラー原因TOP3:全角引用符・NBSP・BOM

🧩 PowerShellの構文エラー原因TOP3:全角引用符・NBSP・BOM

PowerShellスクリプトを実行したときに、
UnexpectedToken」や「文字列に終端記号がありません」という赤エラーが出て動かない——。
そんな経験はありませんか?

実はこれらの構文エラー、文法ミスではなく「文字の種類」 が原因で起きていることが非常に多いです。
特に日本語環境では、以下の3つがPowerShellを混乱させる典型的なトラブル要因です。


🥇 第1位:全角引用符(“ ”、” ”)

最も多いのがこれ。
WordやWebサイト、ブログなどからコードをコピーした際に、
「普通のダブルクォート(")」が「全角のスマートクォート()」に変わってしまう現象です。

PowerShellはこれを文字列の区切りとして認識できません
そのため以下のようなエラーが出ます。

式またはステートメントのトークン '営業企画部' を使用できません。

🔧 対処法:

  • 全角の “ ” を半角の ” ” に置換

  • コードエディタで「スマートクォート自動変換」をOFFにする


🥈 第2位:NBSP(ノーブレークスペース)

見た目は半角スペースですが、内部的には U+00A0 という別の文字です。
HTMLページやブログからコピーしたときに非常によく混入します。

PowerShell上では、
「半角スペースとして解釈されない」ため構文が崩れ、
UnexpectedToken などの不可解なエラーが出ます。

🔧 対処法:

  • サクラエディタやVS Codeで「不可視文字表示」をONにする

  • 以下のコマンドでNBSPやゼロ幅文字を除去可能:


🥉 第3位:BOM付きUTF-8で保存されている

UTF-8自体はPowerShellでも推奨されていますが、
「BOM(Byte Order Mark)」付きUTF-8 で保存された .ps1
スクリプトの先頭に見えない U+FEFF が混入し、これが原因で構文エラーになる場合があります。

🔧 対処法:

  • ファイルを UTF-8(BOMなし) で保存

  • サクラエディタやVS Codeで「保存形式:UTF-8(BOMなし)」を明示的に選択


✅ エラーを防ぐためのおすすめ設定

PowerShellのスクリプトを書くときは、以下の設定を徹底すると安心です。

・エンコード:UTF-8(BOMなし)
・行末コード:CRLF
・クォート文字:必ず半角(" または ')
・不可視文字表示:ON
・自動変換(スマートクォート、全角変換など):OFF

🧰 トラブルを一掃するワンライナー

既におかしな文字が混入している場合は、
次のPowerShellコマンドでクリーンアップできます。

これで、全角クォート・NBSP・BOMをすべて除去できます。


🚀 まとめ

PowerShellの構文エラーの多くは「コードが壊れている」のではなく、
文字の種類が混ざっているだけ です。

  • “全角クォート” → 半角 " " に直す

  • “NBSP” → 普通のスペースに置換

  • “BOM付きUTF-8” → BOMなしに保存

この3点を意識するだけで、
もう意味不明な赤いエラーに悩まされることはありません。