円マークとバックスラッシュですぞ

2 min read読了の目安(約1800字

海外「なぜ日本はハードウェアの時代と同じようにソフトウェアに秀でることができない?」 へのコメントに、VISAの3Dセキュア認証ページですら2019年半ばごろまで0x5Cのままで、フォントが加工されている普通のシステムで見たときは、長らくバックスラッシュになっていた という小話を頂いたのでメモ。

円マークとバックスラッシュの話
Windowsで入力している¥は \(バックスラッシュ)

Wikipedia:
バックスラッシュ
円記号

  • 日本語用の符号化文字集合規格であるJIS X 0201では、円記号は0x5C
  • UNICODEではLaten-1同様、0x5Cはバックスラッシュ。円記号は0xA5
  • 欧文フォント下ではバックスラッシュ、日本語フォント下では円記号が入力される。これは日本IBMのキーボードの刻印に由来するもので、メインフレームの端末として設計された時代の名残であり、今日の一般的なPC環境で円記号とバックスラッシュが共存できることを意味しているわけではない。
  • しかしWindowsのディレクトリセパレーターは0x5Cのまま、円記号ではなくバックスラッシュとして認識し直す必要がある。
  • Unicodeへの統合: 世界の文字コードを単一の体系で包含するためUnicodeという文字コードが生まれた。Unicodeに世界中のあらゆる文字を含ませ、あらゆる言語をUnicodeで表現できるようにすることが目指された。世界の各種文字コードの文字はUnicodeの文字と対応付けられ、それに従って各種文字コードからUnicodeへの変換を可能にするものであったが、円記号の扱いについて問題があった。
  • 前述のとおり、日本語用の文字コードでは円記号が0x5Cに位置し、制御コードとして扱われる。それに対し、西ヨーロッパ言語用のISO-8859-1は0x5C(バックスラッシュ)とは異なる番地の0xA5に円記号が配置されており、円記号は制御コードとして扱われない。したがって、これらの文字コードで書かれた文書をUnicodeに変換し、いずれの円記号をもUnicodeの円記号 (U+00A5) にマッピングした場合、変換後の円記号はバックスラッシュ (U+005C) と同等の制御コードと見なすべき「日本版の円記号」なのか、文字の一種でしかない「ヨーロッパ版の円記号」なのか判別できなくなる。
  • 仮にUnicodeの円記号 (U+00A5) を制御コードと見なさないものとすれば、「制御コードとして使われている円記号はU+005C(バックスラッシュ)に」「そうでないもの(通貨単位などを表すために使われているもの)はU+00A5(円記号)に」変換せねばならない。
  • 現実的解決: この問題に対する現実的解決として、ほとんどの環境では日本の円記号はUnicodeのバックスラッシュ (U+005C) に変換される。
  • Microsoft Windows等のマイクロソフト製のOSでは付属の日本語用のフォントの005Cを円記号に表示するようにすることで表面上問題が起きないようにした。また、多くの日本語JISキーボードでは円記号とバックスラッシュのキーが別々に存在しているが、どちらを入力しても005Cが入力されるようになっている。