日本語のWindowsは礼儀作法にうるさい?――英語環境で動作するコードが日本語環境でNGなワケ:その知識、ホントに正しい? Windowsにまつわる都市伝説(86)(1/2 ページ)
英語環境では問題ないのに、日本語環境だと正常に動作しない。一見、単純なスクリプトでもそんなことがあります。その原因として、システムロケールの違いが大きく影響していることがあります。
テキストファイルにそのまま保存できないのはなぜ?
Windows OSは多言語対応で、極めて多くの地域、言語、通貨単位に対応しています。筆者は英語環境(en-us)と日本語環境(ja-jp)しか利用したことはありませんが、この2つの言語環境でも“文化の違い”に戸惑うことがしばしばあります。
例えば、Windowsの日本語環境では「C:\Windows」のように、ディレクトリ(パス)の区切り文字に「円記号(¥)」を使いますが、英語環境では「バックスラッシュ」が区切り文字であることはご存じの方も多いでしょう。
区切り文字は“表示の違い”だけですが、文字の扱いによっては、プログラム的に問題が生じることもあります。例えば、韓国では同じ場所にウォン記号が割り当てられているため、電子メールなど、シンプルテキストで価格交渉をする際には注意が必要です(これは半分冗談です)。
インターネットからダウンロードしたスクリプトや、Webサイト/電子書籍(PDFなど)からコピー&ペーストしたプログラムコードが期待通りに動作しなかった、という経験はないでしょうか。あるいは、コピー&ペーストしたテキストファイルを保存しようとしたら、Windowsがそのまま保存させてくれなかったということはありませんか(画面1)。
英語環境で動作するコードが日本語環境ではNGな理由は……
前出の画面1のスクリプトは、英語環境では通常の「テキストファイル(ASCIIテキスト)」として問題なく保存でき、実行することも可能です(画面2)。
しかし、そのスクリプトの内容のコピー&ペーストではなく、ファイルコピーで日本語環境に持ってきて実行すると、エラーで失敗します。「TYPE」コマンドや「メモ帳(notepad.exe)」で内容を見てみると、多くの文字化けが発生しています(画面3)。
ここでいう英語環境と日本語環境の違いとは、表示言語の違いではなく、“システムロケール”が「英語(米国)」(en-us)であるか、「日本語(日本)」(ja-jp)であるかということです。
なお、英語環境であっても、Windows PowerShell環境で問題がなくても、Windows Script Host(WSH)ではエラーが発生する場合もあります(画面4)。
Copyright © ITmedia, Inc. All Rights Reserved.
関連記事
- Windowsで起動時に自動実行される不要なプログラムを「見つける」方法
アプリケーションのインストールなどを繰り返していると、いつのまにかWindowsの起動時に自動実行されるプログラムが増殖する。これらを確認するには、Windows 2000なら[コンピュータの管理]を、Windows XPなら[システム情報]を使う。またWindows XPでは[システム構成ユーティリティ]で削除指定ができる。 - Windowsのsvchost.exeプロセスとは? ―sc.exeでサービスをコマンドラインから制御する―
リッスンしているネットワーク・ポートを調べていると、svchost.exeというプロセスが所有者となっていることがよくある。svchost.exeは、ネットワーク関連の基本的なサービスを起動するための親となるプロセスであり、いくつかのグループに分けてサービスを起動している。scコマンドを使うと、サービスをコマンド・プロンプトから制御することができる。 - Windows 10のWindows Updateサービスを停止しようと考えている方へ
Windows 10のWindows Updateは、以前のWindowsから大きく変わりました。Windows 10になってからも変更は続いています。半ば強制的なWindows Updateに対抗する最終手段は「Windows Updateサービス」の無効化ですが、どうしてもというなら、影響を知った上で一時的に無効化するのがよいでしょう。 - Windows 10初期リリース(1507)のサービス終了のお知らせ
マイクロソフトは2017年4月12日(日本時間、以下同)、当初の予定通り、Windows Vista(Service Pack 2)に対する全ての製品サポートを終了しました。次にサポートが終了するのはWindows 7ですが、まだ3年もあると思っていませんか。それよりも前に、セキュリティ更新提供が終了するWindows 10があります。