日本語のWindowsは礼儀作法にうるさい?――英語環境で動作するコードが日本語環境でNGなワケその知識、ホントに正しい? Windowsにまつわる都市伝説(86)(1/2 ページ)

英語環境では問題ないのに、日本語環境だと正常に動作しない。一見、単純なスクリプトでもそんなことがあります。その原因として、システムロケールの違いが大きく影響していることがあります。

» 2017年07月04日 05時00分 公開
[山市良テクニカルライター]
「Windowsにまつわる都市伝説」のインデックス

テキストファイルにそのまま保存できないのはなぜ?

 Windows OSは多言語対応で、極めて多くの地域、言語、通貨単位に対応しています。筆者は英語環境(en-us)日本語環境(ja-jp)しか利用したことはありませんが、この2つの言語環境でも“文化の違い”に戸惑うことがしばしばあります。

 例えば、Windowsの日本語環境では「C:\Windows」のように、ディレクトリ(パス)の区切り文字に「円記号(¥)」を使いますが、英語環境では「バックスラッシュ」が区切り文字であることはご存じの方も多いでしょう。

 区切り文字は“表示の違い”だけですが、文字の扱いによっては、プログラム的に問題が生じることもあります。例えば、韓国では同じ場所にウォン記号が割り当てられているため、電子メールなど、シンプルテキストで価格交渉をする際には注意が必要です(これは半分冗談です)。

 インターネットからダウンロードしたスクリプトや、Webサイト/電子書籍(PDFなど)からコピー&ペーストしたプログラムコードが期待通りに動作しなかった、という経験はないでしょうか。あるいは、コピー&ペーストしたテキストファイルを保存しようとしたら、Windowsがそのまま保存させてくれなかったということはありませんか(画面1)。

画面1 画面1 とあるWebサイトからWindows PowerShellスクリプトをコピー&ペーストして保存しようとしたら、Unicode形式での保存を求められた

英語環境で動作するコードが日本語環境ではNGな理由は……

 前出の画面1のスクリプトは、英語環境では通常の「テキストファイル(ASCIIテキスト)」として問題なく保存でき、実行することも可能です(画面2)。

画面2 画面2 画面1のWindows PowerShellスクリプトは、英語環境では問題なく保存、実行できる

 しかし、そのスクリプトの内容のコピー&ペーストではなく、ファイルコピーで日本語環境に持ってきて実行すると、エラーで失敗します。「TYPE」コマンドや「メモ帳(notepad.exe)」で内容を見てみると、多くの文字化けが発生しています(画面3)。

画面3 画面3 英語環境で問題のないWindows PowerShellスクリプトを日本語環境にコピーして実行するとエラーで失敗する。内容も文字化け

 ここでいう英語環境と日本語環境の違いとは、表示言語の違いではなく、“システムロケール”が「英語(米国)」(en-us)であるか、「日本語(日本)」(ja-jp)であるかということです。

 なお、英語環境であっても、Windows PowerShell環境で問題がなくても、Windows Script Host(WSH)ではエラーが発生する場合もあります(画面4)。

画面4 画面4 英語環境でも、WSHスクリプトとして実行した場合は、文字化けによりエラーになる
       1|2 次のページへ

Copyright © ITmedia, Inc. All Rights Reserved.

RSSについて

アイティメディアIDについて

メールマガジン登録

@ITのメールマガジンは、 もちろん、すべて無料です。ぜひメールマガジンをご購読ください。