![Unicode文字 (U+2295) が (U+2248) として出力されるのはなぜですか?](https://rvso.com/image/1476416/Unicode%E6%96%87%E5%AD%97%20(U%2B2295)%20%E3%81%8C%20(U%2B2248)%20%E3%81%A8%E3%81%97%E3%81%A6%E5%87%BA%E5%8A%9B%E3%81%95%E3%82%8C%E3%82%8B%E3%81%AE%E3%81%AF%E3%81%AA%E3%81%9C%E3%81%A7%E3%81%99%E3%81%8B%3F.png)
メモ帳を開いて、+2295
Altキーを押しながら入力し、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 で使用されていたものです。