以下の内容はhttps://tech.guitarrapc.com/entry/2014/05/15/065254より取得しました。


PowerShell で non-Unicode Programs の言語を変更する

多忙って良くないですね。記事が滞ってますが、ネタだけは日々増えています。

簡単ですが、結構欲しがる人がいそうなので表題の記事を。

Windowsは、シェル (cmdやPowerShell)、あるいはUnicodeでないプログラムで使用する言語を設定しないと、文字化けを起こすことがあります。

これは、Language Packの状態や、Windows UIの言語は別箇の位置づけなので、

English Windowsの言語を日本語にLanguage Pack を当てたけど、PowerShell で日本語が化ける!

ということも起こります。この対応を紹介しましょう。

SystemLocale

Windowsのnon-Unicode時の言語設定はSystem Localeと呼ばれる設定になります。

System Localeが日本語ならnon-Unicodeプログラムで日本語が使え、 en-USなら日本語は正常に認識されません。

旧来の設定方法 (GUI)

PowerShellでサポートされるまで、マウスでポチポチが多かったです。 この場合は、コントロールパネルで設定が可能です。

コントロールパネル > 地域 > 管理タブ

Control Panel > Region > Administrator

と進むと、Unicode対応でないプログラムの言語対応 (Language for non-Unicode programs) という項目があります。

image

image

ここが、日本語(日本) あるいはJapanese (Japan) になっていないと、PowerShellやcmdで日本語が化けて正常に動作しません。

管理者権限があるユーザーで当該項目を開いて、日本語に設定するとWindowsの再起動を求められるので再起動すると切り替わります。

PowerShellで自動化する

PowerShellでやるのは、自動化したり、どこに設定があったっけ? って探さないためです。自動化がいらなくて、マウスで100台のマシンや複数台に毎度やることが耐えられる人はいらないでしょう。 そういう作業はプログラムに任せて、人間のやることじゃないと思っているのでPowerShellを使います。

手順は簡単です。この2行でおしまいです。

Set-WinSystemLocale ja-JP
Restart-Computer

Step1. PowerShell を 管理者として実行

image

Step2. Get-WinSystemLocaleコマンドで現在のシステムロケールを確認

結果がja-JPでなければ、日本語ではないということです。

PS> Get-WinSystemLocale
LCID             Name             DisplayName
----             ----             -----------
1041             ja-JP            Japanese (Japan)

Step3. Set-WinSystemLocaleでシステムロケールを日本語にする

実行しても何も出ないのが残念です。

PS> Set-WinSystemLocale ja-JP
C:\Windows\system32> Set-WinSystemLocale ja-JP
C:\Windows\system32>

Step4. 再起動して適用。

再起動しないと適用されません。自分の手元のPCならこれでいいでしょう。

Restart-Computer

もし、自動化する場合は、他のプログラムに再起動が阻害されないように-Forceにします。

Restart-Computer -Force

以上です。簡単ですね。

まとめ

自動化しないで何をするの。




以上の内容はhttps://tech.guitarrapc.com/entry/2014/05/15/065254より取得しました。
このページはhttp://font.textar.tv/のウェブフォントを使用してます

不具合報告/要望等はこちらへお願いします。
モバイルやる夫Viewer Ver0.14