2020年09月02日

PowerShellスクリプト保存時の文字コードをSJISにするのって、けっこう知られてる?

以前、マウスふるふると同じ機能を実現するPowerShellスクリプトについて、うまく実行できないという相談があり、いろいろあって、保存時の文字コードをShift_JIS(SJIS)にしていなかったことが原因だったことがわかった、ということがありました。

Windowsのメモ帳は、最近になって急に、デフォルトの文字コードをUTF-8にするように仕様変更がありました。
ただ、バッチファイルとかPowerShellスクリプトは、過去との互換性の都合から、勝手にデフォルトをUTF-8とみなすなんてことをしたらSE現場が大混乱しますから、依然としてShift_JIS(SJIS)がデフォルトの文字コードとなっています。

なので、PowerShellスクリプトをコピペしてメモ帳に貼り付けて保存すると、メモ帳はUTF-8だと思って保存するけど、実行時はSJISだと思って実行しようとするので大混乱するという現象が発生します。

というわけで、この報告を受けたときは、ヤベェと思って、保存するときはSJISで保存しましょうということを追記したのですが、よくよく考えてみたら、上記の相談が来た時点で、該当トラブル報告はその1件しかなかったんですよね。

ということは、PowerShellスクリプト保存時の文字コードをSJISにするのって、けっこう知られてて、自然と行われているんでしょうかね。


posted by ayacy at 00:00 | Comment(2) | TrackBack(0) | プログラミング
この記事へのコメント
UTF-8のときはBOMを付けると正常動作します。Unicode文字をPowerShellスクリプトで扱うときはBOM付きUTF-8にする必要があります。
Posted by ff at 2020年09月02日 10:56
補足ありがとうございます。
Posted by Ayacy at 2020年09月02日 15:25
コメントを書く
お名前: [必須入力]

メールアドレス:

ホームページアドレス:

コメント: [必須入力]

認証コード: [必須入力]


※画像の中の文字を半角で入力してください。
※ブログオーナーが承認したコメントのみ表示されます。
この記事へのトラックバックURL
http://blog.sakura.ne.jp/tb/187852153
※ブログオーナーが承認したトラックバックのみ表示されます。
※言及リンクのないトラックバックは受信されません。

この記事へのトラックバック