Unicode文字 (U+2295) が (U+2248) として出力されるのはなぜですか?

Unicode文字 (U+2295) が (U+2248) として出力されるのはなぜですか?

メモ帳を開いて、+2295Altキーを押しながら入力し、Altキーを離します。ファイルをUnicodeエンコードで保存します。しかし、出力はhttp://www.fileformat.info/info/unicode/char/2295/index.htm予想通りだが、これはhttp://www.fileformat.info/info/unicode/char/2248/index.htm代わりに。何が間違っているのでしょうか? ヒントを探しています。

これにつまずいている人のために:注意してくださいEnableHexNumpad新しい文字列型(回答にリンクされているWikiページを参照してください)

答え1

Wikipedia のエントリUnicode 入力方法には、これが機能するために必要な前提条件がリストされています。

この入力方法の前提条件は、レジストリ キーにというHKEY_CURRENT_USER\Control Panel\Input Method文字列型 ( REG_SZ) 値が含まれておりEnableHexNumpad、その値データが であることです1。この入力方法が機能するには、レジストリを編集した後、ユーザーは Windows 8.1/8.0、Windows 7、および Vista でログオフ/ログインするか、以前のシステムで再起動する必要があります。

このレジストリ キーをマシンに追加して再起動すると、入力は宣伝どおりに機能します。

答え2

この特定の値が存在する理由についての質問に答えます。

標準入力方式では、10 進数は 256 で割った余りで計算され、先頭にゼロがない場合は OEM コード ページ* として解釈され、先頭にゼロがある場合は ANSI コード ページとして解釈されます。手順は次のようになります。

  • 2295 ÷ 256 = 247
  • 247 [0xF7]はOEMコードページではU+2295です

この位置に U+2295 を持つ文字セットは、コードページ 437、737、770、772、774、860、861、862、863、864、865、CWI、および MIK です。

(「2295」と「2248」が両方とも22で始まるという事実は、単なる興味深い偶然です)

* 注: 「ANSI コード ページ」は、コード ページ 1252 が後に ISO 8859-1 となったものの草案に基づいていること (および他のいくつかのコードも同様の起源を持つ) を除けば、ANSI とはほとんど関係がありません。これは現在のロケールに関連付けられた 8 ビットの文字セットであり、「OEM コード ページ」はロケールに関連付けられた別の文字セットで、通常はその国の MS-DOS で使用されていたものです。

関連情報