![Почему символ Unicode (U+2295) отображается как (U+2248)](https://rvso.com/image/1476416/%D0%9F%D0%BE%D1%87%D0%B5%D0%BC%D1%83%20%D1%81%D0%B8%D0%BC%D0%B2%D0%BE%D0%BB%20Unicode%20(U%2B2295)%20%D0%BE%D1%82%D0%BE%D0%B1%D1%80%D0%B0%D0%B6%D0%B0%D0%B5%D1%82%D1%81%D1%8F%20%D0%BA%D0%B0%D0%BA%20(U%2B2248).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
TheЗапись в Википедиив методах ввода Unicode перечислены необходимые предпосылки для работы этого:
Предпосылкой для этого метода ввода является то, что раздел реестра
HKEY_CURRENT_USER\Control Panel\Input Method
содержит значение типа строки (REG_SZ
), называемоеEnableHexNumpad
, которое имеет значение data1
. Пользователям необходимо выйти из системы/войти в Windows 8.1/8.0, Windows 7 и Vista или перезагрузиться в более ранних системах после редактирования реестра, чтобы этот метод ввода начал работать.
После того, как я добавил этот ключ реестра на свой компьютер и перезагрузил его, ввод работает так, как и было заявлено.
решение2
Чтобы ответить на вопрос, почему присутствует именно это значение:
При стандартном методе ввода десятичные числа берутся по модулю 256, а затем интерпретируются как кодовая страница OEM*, если начальный ноль отсутствует, или кодовая страница ANSI, если начальный ноль есть. Итак, шаги следующие:
- 2295 мод 256 = 247
- 247 [0xF7] — это U+2295 в кодовой странице OEM
Наборы символов, которые содержат U+2295 в этом зелье, — это кодовые страницы 437, 737, 770, 772, 774, 860, 861, 862, 863, 864, 865, CWI и MIK.
(Тот факт, что «2295» и «2248» оба начинаются с цифры 22, является интересным совпадением, не более того)
* Примечание: «Кодовая страница ANSI» имеет мало общего с ANSI, за исключением того, что кодовая страница 1252 была основана на проекте того, что позже стало ISO 8859-1 [и некоторые другие имели похожее происхождение]. Это 8-битный набор символов, связанный с текущей локалью, а «Кодовая страница OEM» — это другой набор символов, связанный с локалью, обычно тот, который использовался в MS-DOS в этой стране.