41

ASCII 以外の文字を使用して PowerShell 用の UTF8 スクリプトを作成しました。

キャラクター.ps1:

Write-Host "ç â ã á à"

スクリプトを PowerShell コンソールで実行すると、間違った文字が出力されます。

ここに画像の説明を入力

ただし、コンソールに直接文字を書き込むと、期待どおりに表示されます。

ここに画像の説明を入力

誰がその動作の原因を知っていますか?

この問題は、ASCII 以外の文字を含むハードコードされたパスを持つ、私が書いたスクリプトから発生しました。パスを引数としてコマンドレットに渡そうとすると (フォルダーをロボコピーする場合)、パスが見つからないためコマンドが失敗します (画面に誤って出力されます)。

4

4 に答える 4

93

スクリプトのエンコーディングを BOM 付きの UTF-8 に変更すると、問題が解決しました。

EncodingHelper プラグインで SublimeText を使用して、スクリプトの文字セットを制御していました。UTF8に正しく設定されました。

SublimeText のスクリプトのエンコーディングを「UTF-8 with BOM」に変更したところ、出力が正しく表示されました。

デフォルトで「UTF-8 with BOM」に設定されている Notepad++ で同じスクリプトを作成したところ、コンソールに文字列が正しく表示されました。

Notepad++ でスクリプトのエンコーディングを「BOM なしの UTF-8」に変更したところ、正しく表示されませんでした。

PowerShell は、BOM のない UTF-8 ファイルのエンコーディングを正しく推測できないようです。

于 2013-01-23T14:56:06.817 に答える
-1

スクリプトを呼び出す前にこれを試してください:

 $OutputEncoding = [Console]::OutputEncoding
于 2013-01-23T14:42:35.333 に答える