2017年4月16日日曜日

PC Win10 v1703 コマンド系のシェルと Blog での表記 「¥」

はて と困っています。
Blog で コマンドの例 を記述するのに、 ファイルやフォルダのパスの表記をどうするか?。
はい。 ¥ です。
コピペすると 駄目になっちゃう様で ... 。


¥ と言っても お金 では ありません。


パスの区切り文字として、日本語環境で使われる ¥ です。

上の ¥ は 全角 で表示しています。
半角 だと \ ですが ¥ に見えずに \ に見えている筈です。
これを 半角の ¥ に見える様に HTML 表記で "&yen" を使って来ました。  一部、そのまま \ だったりもしますが ... 。
そうすると、 あら 不思議 !。  ちゃんと、 半角の ¥ に 見えるのですよね。

今迄、 (きっと)、  これで問題は無かった 筈 です。

例えば、
コマンドプロンプトに 貼り付け (ペースト) ても エラーは吐かなかった気がします。


しかし、
Windows 10 も v1703 になり、
コマンドプロンプト (cmd.exe) から パワーシェル (powershell.exe) へ 移行が進んでいます。

この所為かどうかは分かりませんが、
Blog (.html) で 半角の ¥ 表記にした コマンド ライン 、
これを コピペ ( Copy&Paste ) し、実行すると、
エラーを吐く様になったのです。

Blog (.html) では UTF-8 の文字コードで記述され、
区切り記号を Unicode の 165 番 (U+00A5) で書いていた事になります。
これに対して、
パス区切り文字 の \ は Unicode の 92 番 (U+005C) です。

今迄は Windows は この U+00A5 を U+005C に 読み替えてくれていた 筈 でした。
表示のみでなく、実際の処理も U+00A5 を U+005C として扱ってくれていたのですね。
でも、 今の OS は ... 。
     何時から、この仕様に変わったのか分からないのですが、 Creators Update が怪しい ... 。.


具体的な例を示しましょう。

Windows 10 version 1703 build 15063.138 の
コマンドプロンプト (cmd.exe) か パワーシェル (powershell.exe) で、
次のコマンドラインをコピペ ( Copy&Paste ) し、実行して見て下さい。

¥= U+00A5
 dir C:¥WINDOWS

¥= U+005C
 dir C:\WINDOWS

結果はこんな感じ。
 コマンドプロンプトは 上の順序で 実行、
 パワーシェル は 最初のエラーを吐くものと、それを 実在するドライブに替えたものと、区切り記号を打ち直したもの。


PowerShell の結果を見れば、
 ¥¥で評価されるか、 ドライブ区切り迄を無視しているか、 どちらかなのかが分かります。

文字コードに 忠実に 処理を行い、 結果、 可笑しな答えが返って来ています。
しかし、日本語環境の表示上では、両者は見分けが着かない! と来たもんだ。  はは ... 。



さて、 どうしよう ... 。

  暫定的に、 もし、コピペして その答えが異常だったら、¥を打ち直して 見て下さい ...。



PS: 右欄にも、 「 区切り記号¥について 」 として、掲示スペースを設けました。



やはり、欧米圏出生の Windows は日本語が苦手 ... 。.



0 件のコメント:

コメントを投稿