質問: ATOMエディターで以下のスクリプトを書きました 以下がスクリプトの内容です ``` Write-Host "ハロー" ``` PowerShellから実行すると文字化けします。 ``` HelloWorld.ps1 > 繝上Ο繝シ ``` ATOMではUTF-8を使っています。これは変えたくないのですが 拡張子がps1の場合のみ Shift-JIS で保存するような機能はATOMにありますか? または、PowerShellの設定を変える事で文字化けしなくなるように 出来ますでしょうか? > > PowerShell version > > Name Value > > ---- ----- > > PSVersion 5.1.15063.674 > > PSEdition Desktop > > PSCompatibleVersions {1.0, 2.0, 3.0, 4.0...} > > BuildVersion 10.0.15063.674 > > CLRVersion 4.0.30319.42000 > > WSManStackVersion 3.0 > > PSRemotingProtocolVersion 2.3 > > SerializationVersion 1.1.0.1 > > > ATOM Vetsion > > 1.21.1 > > >
回答: Atom インストールして確かめましたが UTF-8 保存するとBOMが付かないので、 `powershell` インタプリタがレガシーエンコーディングで読んで文字化けしますね。 ISE じゃなくてどうしても Atom で ps1 書きたいなら、下記のような方法があるでしょう。 * BOM付きUTF-8 を扱えるよう Atom に要望を出す → * BOM無しUTF-8 を扱えるよう PowerShell に要望を出す → * unicode-input を使いファイルの先頭に BOM (U+FEFF) を入力する。 入力しても文字は見えません。カーソルを左や右に移動させて幅ゼロの文字があることを確かめてください。 * language-powershell 使っているなら `config.cson` に ``` ".source.powershell": core: fileEncoding: "shiftjis" ``` と付け足す。 カスタマイズについて詳しくは を見てください。新規ファイルのときは名前を付けて保存する前に、画面右下の Plain Text ってなっているのを PowerShell にしておかないと、utf8(デフォルトエンコーディング)で保存してしまい(しかも shiftjis で読み直して文字化けし)ます。