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

» 2017年07月04日 05時00分 公開
[山市良テクニカルライター]
前のページへ 1|2       

犯人は「“”」とハイフンっぽいもの

 前出の画面1画面2では、ぱっと見だと分かりにくいかもしれませんが、意図的に幾つかの種類のダブルクォーテーションとハイフンを織り交ぜています。日本語環境とWSH環境でエラーを発生させているのは、ダブルクォーテーションっぽく見える文字コード147(0x93)と148(0x94)の文字と、ハイフンっぽく見える文字コード150(0x96)と151(0x98)の文字でした(画面5)。

画面5 画面5 ASCII文字コードセットの128字の外にあるダブルクォーテーションやハイフンらしきものが、英語環境のWindows PowerShellでは許容される?

 これらの文字は、英語環境のWindows PowerShellでは使えてしまいますが、日本語環境では完全にUnicodeのコードセットの範囲にあります(画面6)。日本語環境でプログラムコードとして使えるのは、いわゆる「半角英数字」と呼ばれる、ASCII文字コードセットの128字の範囲にある、文字コード34(0x22)の「"」文字コード45(0x2D)の「-」です。

画面6 画面6 日本語環境ではダブルクォーテーションやハイフンらしき文字は文字化けする

 このような文字が紛れ込む理由には、ドキュメントやコード作成者の配慮のなさ、ドキュメントやWeb編集ソフトによる意図しない変換などが考えられます。筆者は文字コードに詳しいわけではないので、他にも理由があるのかもしれません。

過去には、Windows Server 2016プレビュービルドにこんな問題が……

 英語環境のWindows PowerShellでは、日本語環境ではどうやって入力するのかも分からないような、ダブルクォーテーションやハイフンのように見える文字が許容されてしまうようです。そして、英語圏のプログラマーが書いたコードには、このような文字が含まれてしまうことがあります。また、これらのコードとして問題のある文字は、PDF形式のドキュメントをコピー&ペーストすると遭遇することがあります。

 こんなことはレアケースだと思いますか。実は、Windows Server 2016の開発中に、Windows PowerShellのモジュールの1つに、不適切な文字(ダブルクォーテーションらしきもの)が含まれていて、特定のコマンドレットが日本語環境では全く動作しないという不具合がありました(画面7)。念のため付け加えておくと、Windows Server 2016の正式リリースで、この問題は解消されました。

画面7 画面7 Windows Server 2016の開発中の公開ビルド(Technical Preview 3)に含まれていた、言語固有で発生する不具合。日本語環境以外の言語環境への影響は不明

筆者紹介

山市 良(やまいち りょう)

岩手県花巻市在住。Microsoft MVP:Cloud and Datacenter Management(Oct 2008 - Sep 2016)。SIer、IT出版社、中堅企業のシステム管理者を経て、フリーのテクニカルライターに。マイクロソフト製品、テクノロジーを中心に、IT雑誌、Webサイトへの記事の寄稿、ドキュメント作成、事例取材などを手掛ける。個人ブログは『山市良のえぬなんとかわーるど』。近著は『Windows Server 2016テクノロジ入門−完全版』(日経BP社)。


前のページへ 1|2       

Copyright © ITmedia, Inc. All Rights Reserved.

RSSについて

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

メールマガジン登録

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