英語環境では問題ないのに、日本語環境だと正常に動作しない。一見、単純なスクリプトでもそんなことがあります。その原因として、システムロケールの違いが大きく影響していることがあります。
Windows OSは多言語対応で、極めて多くの地域、言語、通貨単位に対応しています。筆者は英語環境(en-us)と日本語環境(ja-jp)しか利用したことはありませんが、この2つの言語環境でも“文化の違い”に戸惑うことがしばしばあります。
例えば、Windowsの日本語環境では「C:\Windows」のように、ディレクトリ(パス)の区切り文字に「円記号(¥)」を使いますが、英語環境では「バックスラッシュ」が区切り文字であることはご存じの方も多いでしょう。
区切り文字は“表示の違い”だけですが、文字の扱いによっては、プログラム的に問題が生じることもあります。例えば、韓国では同じ場所にウォン記号が割り当てられているため、電子メールなど、シンプルテキストで価格交渉をする際には注意が必要です(これは半分冗談です)。
インターネットからダウンロードしたスクリプトや、Webサイト/電子書籍(PDFなど)からコピー&ペーストしたプログラムコードが期待通りに動作しなかった、という経験はないでしょうか。あるいは、コピー&ペーストしたテキストファイルを保存しようとしたら、Windowsがそのまま保存させてくれなかったということはありませんか(画面1)。
前出の画面1のスクリプトは、英語環境では通常の「テキストファイル(ASCIIテキスト)」として問題なく保存でき、実行することも可能です(画面2)。
しかし、そのスクリプトの内容のコピー&ペーストではなく、ファイルコピーで日本語環境に持ってきて実行すると、エラーで失敗します。「TYPE」コマンドや「メモ帳(notepad.exe)」で内容を見てみると、多くの文字化けが発生しています(画面3)。
ここでいう英語環境と日本語環境の違いとは、表示言語の違いではなく、“システムロケール”が「英語(米国)」(en-us)であるか、「日本語(日本)」(ja-jp)であるかということです。
なお、英語環境であっても、Windows PowerShell環境で問題がなくても、Windows Script Host(WSH)ではエラーが発生する場合もあります(画面4)。
Copyright © ITmedia, Inc. All Rights Reserved.