「円記号」の版間の差分

編集の要約なし
{{特殊文字|説明=円記号などの記号}}
<div style="float:right; margin: 10px; padding:30px; font-size: 400%; background-color: #ddddff; border: 1px solid #aaaaff;">&yen;</div>
{{通貨記号}}
バックスラッシュは、[[MS-DOS]]では[[ディレクトリ]]名を区切る記号として、[[C言語]]なら[[文字列]]の中で[[特殊文字]]を意味する記号として扱われるなど、ISO/IEC 646で未定義の文字を、各種[[オペレーティングシステム]]や[[プログラミング言語]]、その他の[[ソフトウェア]]で制御コードとして使用するという不適切な仕様が一般化してしまった。
 
日本語用の文字コードにはバックスラッシュが存在せず、同じ0x5C番地に円記号が割り当てられているのであるが、これらのソフトウェアでは0x5C番地の文字が制御コードとして扱われるようにされていたため、'''日本語用文字コードでは円記号が同等の制御コードとして解釈される'''ことになった。
 
=== 西ヨーロッパ言語用文字コードにおける円記号 ===
世界の文字コードを単一の体系で包含するためUnicodeという文字コードが生まれた。Unicodeに世界中のあらゆる文字を含ませ、あらゆる言語をUnicodeで表現できるようにすることが目指された。世界の各種文字コードの文字はUnicodeの文字と対応付けられ、それに従って各種文字コードからUnicodeへの変換を可能にするものであったが、円記号の扱いについては問題があった。
 
前述のとおり、日本語用の文字コードでは円記号が0x5Cに位置し、制御コードとして扱われる。それに対し、西ヨーロッパ言語用のISO-8859-1は0x5C(バックスラッシュ)とは異なる番地の0xA5に円記号が配置されており、円記号は制御コードとして扱われない。したがって、これらの文字コードで書かれた文書をUnicodeに変換し、いずれの円記号をもUnicodeの円記号(U+00A5)にマッピングした場合、変換後の円記号はバックスラッシュ(U+005C)と同等の制御コードと見なすべき'''日本版の円記号'''なのか、文字の一種でしかない'''ヨーロッパ版の円記号'''なのか判別できなくなってしまうのである。また、Unicodeの円記号(U+00A5)を制御コードと見なさないものとすれば、'''制御コードとして使われている円記号はU+005C(バックスラッシュ)に''''''そうでないもの(通貨単位などを表すために使われているもの)はU+00A5(円記号)に'''変換せねばならないが、この処理は困難である。
 
=== 現実的解決 ===
 
== 文字実体参照による出力 ==
[[HyperText Markup Language|HTML]]における[[文字参照#文字実体参照(実体参照)|文字実体参照]]では、 '''&amp;yen;''' で円記号を表示することができる。このときに出力される円記号はU+00A5にマッピングされているものである。
 
== 符号位置 ==
 
== 外部リンク ==
*[http://slashdot.jp/~yasuoka/journal/360792 YEN SIGN問題縁起](2006.6 yasuokaの日記、[[スラッシュドットジャパン]])
 
{{Punctuation_marks}}
匿名利用者