¥記号
出典: フリー百科事典『ウィキペディア(Wikipedia)』
¥記号は日本の通貨単位、円を意味し、金額を表示する際に接頭語的に使用される記号である。なお、日本以外では中国人民元(Yuan)などにも用いられる。
この¥記号は、コンピュータの文字コードの世界では厄介な問題(円記号問題)を抱えた記号のひとつとして知られる。
目次 |
[編集] 円記号問題
日本語で記述された文書が円記号を含んでいると、Unicodeで表現したときに矛盾を生んでしまうという問題である。
[編集] 発端
ことの始まりは、米国で制定された文字コードであるASCIIをベースにしたISO-646コード体系が各国で利用されたことである。ISO-646は128文字分の領域を持つコード体系だが、このうち12文字は各国で自由に決めてもよい領域とされていた。この中で、本家の米国版ASCIIではバックスラッシュ(\)記号が割り当てられていた0x5C番地は、ISO-646の日本での規格、JIS-X0201では円記号(¥)が割り当てられることとなった。
[編集] 制御コードとしての利用
バックスラッシュ記号は、各種オペレーティングシステムやプログラミング言語、その他のソフトウェアで制御コードとして利用された。例えばMS-DOSならディレクトリ名を区切る記号として、C言語なら文字列の中で特殊文字を意味する記号としてである。
これらのソフトが日本へ輸入された際には、ソフト自体は文字コード0x5Cに反応するため、円記号がそのまま制御コードとして働くことになった。
[編集] Unicodeへの統合
世界の文字コードはやがて、Unicodeという単一の体系ですべてを包含しようという方向になった。この際に問題が起こる。ヨーロッパで使われている文字コードであるISO-8859-1は、0x5C(\)とはまったく別の番地-0xA5-に円記号(¥)を持っているのである。つまり、ISO-8859-1で書かれたプログラムの中では、円記号が登場しても制御コードとして区別する必要はない。
Unicode文書の中に円記号が登場した場合、制御コードと見なすべき日本版の円記号(\)なのか、文字の一種でしかないヨーロッパ版の円記号(¥)なのか区別がつかなくなってしまうのである。
[編集] 現実的解決
この問題に対する現実的解決のひとつが、マイクロソフト製のOSで実装されている変換法である。マイクロソフトの変換法では、日本の円記号はUnicodeのバックスラッシュに変換される。そして、日本語用のフォントではバックスラッシュを円マークとして表示してしまうのである。
賛否の多い対応ではあったが、旧来のソフトウェアを捨て去ることなくUnicodeを利用できる現実的な方法として広く使われている。
[編集] Shift_JISにおける問題
Shift_JIS等においては、別の問題が起こった。Shift_JISを例に取ると、「ソ」「噂」など一部の字の2バイト目が0x5Cにあたり、この0x5Cが制御文字として認識されてしまうという問題である。初期のMS-DOSやJavaScript、CGI処理などでこの問題が起こった。この問題は、同じように2バイト目の範囲に0x5cを含むBig5や、(まれではあるが)GBKなどの文字コードでも発生しうる。
現在でも、CGI処理や英語圏のソフトウェアを日本語環境で使用すると、改行などの動作やファイル名などにしばしばこの問題がつきまとう。この不具合を招く、2バイト目に0x5Cを持つ文字のことを、俗にダメ文字と呼び、この中には「ソ」「構」「能」「表」など一般に使用頻度の高い文字も多い。
CGI処理については、htmlソース全体をEUCコードに変換してからウェブサーバに置く方法が、対応処理が簡単に済むために取られることが多い。
[編集] 2バイト目に0x5Cを持つ文字(いわゆる「ダメ文字」)一覧
文字 | 文字コード | 読み・意味 |
---|---|---|
― | 0x815c | ダッシュ |
ソ | 0x835c | カタカナの「そ」 |
Ы | 0x845c | ロシア文字のウィ |
Ⅸ | 0x875c | Windows環境ではローマ数字の9 Mac環境ではGB(ギガバイト) |
噂 | 0x895c | うわさ。 |
浬 | 0x8a5c | 海里 |
欺 | 0x8b5c | あざむく。詐欺 |
圭 | 0x8c5c | けい。人名。 |
構 | 0x8d5c | かまえる。構造 |
蚕 | 0x8e5c | カイコ。養蚕 |
十 | 0x8f5c | 漢数字の10。 |
申 | 0x905c | もうす、しん。申請 |
曾 | 0x915c | そ、ひ。「曽」の異体字。曾孫 |
箪 | 0x925c | たん。箪笥 |
貼 | 0x935c | はる。貼付 |
能 | 0x945c | のう。能力 |
表 | 0x955c | あらわす、ひょう。表現 |
暴 | 0x965c | あばれる、ぼう。暴力 |
予 | 0x975c | あらかじめ、よ。予備 |
禄 | 0x985c | ろく。俸禄 |
兔 | 0x995c | と、うさぎ。「兎」の異体字 |
喀 | 0x9a5c | かく。喀血 |
媾 | 0x9b5c | こう。媾和(講和の非書換え) |
彌 | 0x9c5c | や。弥生の「弥」の旧字体 |
拿 | 0x9d5c | だ。拿捕 |
杤 | 0x9e5c | 栃の別体 |
歃 | 0x9f5c | すする、そう、しょう。 |
濬 | 0xe05c | さらう、しゅん。 |
畚 | 0xe15c | ふご、ほん。 |
秉 | 0xe25c | とる、へい。 |
綵 | 0xe35c | あや、さい。 |
臀 | 0xe45c | でん、しり。臀部 |
藹 | 0xe55c | あい。 |
觸 | 0xe65c | 触の旧字体 |
軆 | 0xe75c | 体の古字 |
鐔 | 0xe85c | つば。刀の鐔(鍔)。 |
饅 | 0xe95c | まん。饅頭 |
鷭 | 0xea5c | バン。鳥の名。 |
偆 | 0xed5c | しゅん。 |
砡 | 0xee5c | ぎょく。 |
纊 | 0xfa5c | わた、こう。 |
犾 | 0xfb5c | ぎん。 |
[編集] 参考文献
- S. Gorn, R. W. Bemer, J. Green: American Standard Code for Information Interchange, Communications of the ACM, Vol.6, No.8 (1963年8月), pp.422-426.
- 情報処理交換用 新標準コード案 決定さる, 情報処理, Vol.6, No.6 (1965年11月), pp.173-174.
- 海宝顕: 電子計算機と情報処理におけるコード標準化の現況と課題, IBM Review, 第17号 (1967年7月), pp.167-176.
- R. W. Bemer: A View of the History of the ISO Character Code, The Honeywell Computer Journal, Vol.6, No.4 (1972年), pp.274-286.
- 山下良蔵: MS-DOSの漢字機能, ASCII, Vol.7, No.5 (1983年5月), pp.228-230.
- The Unicode Standard, Version 1.0, Vol.1, Addison-Wesley, Reading, 1991.