YEN SIGN 問題
出典: フリー百科事典『ウィキペディア(Wikipedia)』 (2022/06/12 01:59 UTC 版)
「Unicode」の記事における「YEN SIGN 問題」の解説
Shift JIS では JIS X 0201 における(日本や中国の通貨の)円記号 "¥" が 0x5C に置かれている。これを Unicode のマッピングに合わせると YEN SIGN (U+00A5) にマップされる。しかし、0x5C は ASCII ではバックスラッシュ "\" に相当し、C言語などでエスケープ文字として使われる事から、この文字のコードを変更すると問題が起きる。極端な例として、0x5C が円記号とエスケープ文字の両方の目的で使われているケース(たとえばC言語のprintf関数で printf("¥¥%d¥n", price); など)も考えられる。 そのため、Unicode を利用するアプリケーションでは、U+007F 以下のコードに関しては移動させないという暗黙のルールができている。 そうなると、Unicode 環境では円記号がバックスラッシュの表示に変わってしまうように思われるが、これは日本語用のフォントデータの 0x5C の位置には円記号の字形を当ててしまうことで対処している。これによって、日本語環境での表示上は 0x5C の位置で円記号を用いることができる。 この問題は日本語環境に限ったことではない。もともと ISO 646 上では、0x5C を含む数種の文字は自由領域(バリアント)として各国での定義を認めていた。そのため、日本語以外でも ASCII でバックスラッシュに相当するコードに異なる記号を当てているケースが多い。例えば、韓国では通貨のウォン記号 (WON SIGN, U+20A9, "₩")、デンマークやノルウェーではストローク付きO (LATIN CAPITAL LETTER O WITH STROKE, U+00D8, "Ø") などである。(後者は後の時代には、0x5C はバックスラッシュのままとし、ISO 8859 シリーズを用いることが一般化した。)
※この「YEN SIGN 問題」の解説は、「Unicode」の解説の一部です。
「YEN SIGN 問題」を含む「Unicode」の記事については、「Unicode」の概要を参照ください。
- YEN SIGN 問題のページへのリンク