Как вы вводите символы Юникода, используя шестнадцатеричные коды?


77

Это в Windows, но ответы для других операционных систем могут быть полезны для других.

В большинстве руководств говорится что-то вроде «зажмите клавишу Alt и введите код на клавиатуре». Это прекрасно работает для десятичных кодов (например, 65 для «A»), но не для шестнадцатеричных кодов (например, U + 0041 для «A»).

Некоторые приложения предоставляют другие средства, которые позволяют вводить шестнадцатеричные коды символов Unicode, а затем преобразовывать их. Word позволяет вводить код (например, 200f), а затем преобразовывать его в Unicode, набрав Alt-X.

Я ищу общий способ сделать это, который будет работать со стандартным вводом.


1
Это прекрасно работает для символов Юникода, которые не включают шестнадцатеричные символы от A до F., следует читать: для десятичных кодов . Есть много шестнадцатеричных чисел, которые не используют AF. Как 10, что не десять тогда ...
Арджан

1
Это бесполезно для меня, когда мне нужно набрать u + 23AF.
Будет

4
Моя точка зрения такова: вы не можете набирать такие вещи, как u + 0041 (шестнадцатеричный 41, десятичный 65), используя цифровую клавиатуру либо (как тогда нужно будет набрать 65, а не 41) - fileformat.info/info/unicode/char/0041 Таким образом, использование Alt-trick прекрасно работает для десятичных кодов, но не для шестнадцатеричных кодов .
Арджан

1
@Will: метод «alt + NN ...» ожидает десятичное , а не шестнадцатеричное представление позиции символа. Юникод использует hex. Поэтому, если вы хотите ввести то, что Unicode представляет как «U + 23AF», вам нужно преобразовать hex == 23AF в десятичное == 9135, а затем набрать «alt + 9135». Это единственный общий метод, который предлагается. Но: требуемый символ может по-прежнему не отображаться должным образом в текстовом поле или документе, если выбранный в данный момент шрифт не заполнен местом «U + 23AF» (или если он не является шрифтом Unicode в первую очередь!).
Курт Пфайфл

@Arjan: вы не вводите шестнадцатеричные символы с помощью метода «alt + nnn». Вы вводите только десятичные коды символов. Вот почему вы не можете набирать даже прямые строки «U + 1234» (которые не содержат ни одного из ваших ненавистных символов «af») на вашей цифровой клавиатуре как «alt + 1234», но вам необходимо преобразовать hex == 1234 в dec = = 4660, а затем введите «alt + 4660», прежде чем ( МОЖЕТ ) получить то, что вы хотите. Таким образом, ваше утверждение «использование Alt-трюка не работает для шестнадцатеричных кодов» точно решает проблему, но вы упустили возможность понять это сами :-)
Курт Пфайфл

Ответы:


23

Ответ harrymc хорош, если вы можете / можете изменять настройки реестра.

Если нет, вы можете использовать Windows Calculator Accessory для преобразования из шестнадцатеричного в десятичное. Режим по умолчанию не будет этого делать: XP и Vista имеют «Научный режим», тогда как Windows 7, 8, 8.1 и 10 имеют режим «Программист».

Выберите шестнадцатеричное основание, а затем введите шестнадцатеричное число. Затем перейдите к основанию Dec, чтобы увидеть эквивалентное значение в десятичном виде Это число, которое нужно набрать на цифровой клавиатуре, удерживая нажатой клавишу Alt .

Это может зависеть от языка ввода, и вам может потребоваться префикс ноль к десятичному значению.


Вы также можете рассчитать с помощью set /aв командном окне ;-). Чтобы преобразовать hex = 4321 в десятичное число, просто введите, set /a 4*16*16*16+3*16*16+2*16+1и результат будет отображаться как 17185
Курт Пфайфл

3
Кроме того, set /a 0x4321также будет отображаться 17185.
Маркс Томас

6
Ответ вводит в заблуждение, потому что он не упоминает, что ведущий ноль необходим при использовании десятичного числа вне диапазона Ascii (> 127). Если вы хотите набрать U + 23AF и, следовательно, преобразовать 23AF в десятичное, 9135, а затем попытаться использовать Alt 9135, вы получите «» »(U + 00BB). Вам нужно набрать Alt 09135 (используя цифровую клавиатуру), чтобы получить правильный символ.
Юкка К. Корпела

8
Метод с использованием десятичных чисел зависит от «языка ввода» (как концепция Microsoft), поэтому результаты зависят от системы и программы. Например, в большинстве программ Windows, когда системный язык установлен на английский или другой западный язык, таким образом можно вводить только символы латинского алфавита Windows 1. Любой Alt 0n для n> 255 будет тогда работать «по модулю 256», то есть с уменьшением n до диапазона 0 ... 255 путем деления на 256 и взятия остатка.
Юкка К. Корпела

2
Этот ответ неверен. Alt + 0nnn (0-255) вводит символ из кодовой страницы ANSI системы (например, 1252). Введенное значение по модулю 256, как указано выше. Alt + nnn (0-255) без начального нуля вводит символ из кодовой страницы OEM системы (например, 437 или 850). Однако первые 31 код не являются обычными управляющими символами ASCII, а представляют собой глифы, которые отображались для этих символов на компьютерах 1980-х годов, работающих под DOS. В Windows API последний соответствует использованию MB_USEGLYPHCHARSфлага при декодировании байтов в Unicode через MultiByteToWideChar.
Eryk Sun

39

Нашел это в разделе Как вводить символы Unicode в Microsoft Windows :

Я проверил это в Windows XP и Windows 2003. Этот метод работает независимо от любых ваших языковых настроек, но наиболее громоздок для ввода:

  1. Нажмите и удерживайте клавишу Alt.
  2. Нажмите кнопку + (плюс) на цифровой клавиатуре.
  3. Введите шестнадцатеричное значение Unicode.
  4. Отпустите клавишу Alt.

Увы, для этого требуется настройка реестра. Он уже был установлен на моем компьютере, но некоторые читатели сообщают, что этот метод не работает для них, и это, вероятно, почему. Если вы не знаете, что такое реестр, пожалуйста, не пытайтесь это сделать. В разделе HKEY_CURRENT_USER\Control Panel\Input MethodEnableHexNumpad установите значение «1». Если вам нужно добавить его, установите тип REG_SZ.

Вы должны выйти из системы, а затем войти в нее после изменения реестра или даже перезагрузить компьютер.


1
если я не знаю, что такое реестр, то я не знаю, как попробовать ни того, ни другого.
Вануан

5
Если вы не знаете, что такое реестр, вы никогда не должны его трогать. Попросите кого-нибудь, кого вы знаете, о помощи.
Wug

+1, но несколько вещей: (i) в Firefox и IE, если шестнадцатеричный код, который вы пытаетесь ввести, содержит букву, соответствующую сочетанию клавиш Alt + [буква] для меню, меню выпадает, и вы не получить вашего персонажа (это разрыв E & F на обоих, A на IE и B на Firefox, блокнот работает нормально, как и окно winkey + R "run"); (ii) REG_SZ может появиться в новом элементе меню при щелчке правой кнопкой мыши как «Строка реестра»
Крис Х

Это должно работать во всех приложениях? Я получил его для работы в блокноте, notepad ++, Firefox и даже Excel, но не в Word, Outlook, PowerPoint или Lync. Это на W7.
Дидье Л

3
Привет, Гарримк. Как мне печатать буквы, содержащиеся в шестнадцатеричном формате? пример: "👉" = 👉 - после того, как я нажму FAlt, команда меню будет выполнена в Windows. Он не вылетает с преобразованием в десятичное число (128073) без добавления начальных нулей.
Матас Вайткявичюс

17

В Mac OS X: откройте «Международный» в «Системных настройках» и в «Меню ввода» выберите «Шестнадцатеричный ввод Unicode», чтобы добавить эту опцию в меню ввода. Звучит очевидно, но это хорошо спрятано в длинном списке языков, между украинским и вьетнамским. Когда выбрано, удерживайте Option и введите 4-значный шестнадцатеричный код.

Также в OS X: калькулятор может быть установлен в режим программирования (Cmd-3), который позволяет вводить десятичные, восьмеричные и шестнадцатеричные коды, которые затем отображаются как ASCII или Unicode. Однако Copy даст один код, а не символьный эквивалент (ы). Кто угодно?

(Для Windows см. Как вводить символы Unicode в Microsoft Windows ; другие способы ввода см. В Википедии .)

А вот на Super User:

И впадать в крайности


9

В Ubuntu (и его вариантах, например LinuxMint) вы можете вводить значения Unicode, нажимая Ctrl+ Shift+, uа затем значение Unicode и Enter, например:

Ctrl+ Shift+ u 263aзатем введите доходность:

Текст: ☺
Снимок экрана:альтернативный текст

Вы можете связать это с AutoHotkey для более легкого ввода или возможного ввода в Windows.


2
К сожалению, это работает только в приложениях GTK +.
Механическая улитка

2
Вы также можете удерживать нажатой клавишу Ctrl-Shift при вводе кода, что позволяет избежать необходимости нажимать Enter впоследствии.
Механическая улитка

1
Я нашел лучшее решение: Вы можете добавить знаки ударения к любому предшествующему символу, используя Юникод, объединяющий диакритические знаки. Юникод 0301 - 0308 полезен для пиньинь. например: "a" + [ctrl] [shift] [u] + 0301 [return] -> á. Список пиньинь: ó -> 0301; Х -> 0300; ō -> 0304; ŏ -> 0306; ö -> 0308; см. en.wikipedia.org/wiki/Combining_character#Unicode_ranges
emf

6

Я написал небольшой инструмент ввода Unicode на основе AutoHotkey, потому что я не нашел лучшего решения. Вы можете вставить символы Юникода с помощью Shift+ Ctrl+ U.

Диалог Юникод

По сути, он преобразует запись в символ Unicode и «печатает» ее в позиции курсора.

Он не поддерживает 6-значные символы Юникода. Кроме того, если у вас есть поле ввода, где весь текст выделен при потере фокуса, весь текст будет перезаписан (я думаю, я помню, что старая версия Firefox показала такое поведение).

Для справки, вот источник AutoHotkey, если вы хотите скомпилировать его самостоятельно:

#SingleInstance force
#Persistent
;Menu, Tray, icon, unicode.ico
Menu, Tray, nostandard ; Put the following menu items on top (default: bottom)
Menu, Tray, add, Info, InfoHandler, -10
Menu, Tray, add
Menu, Tray, standard ; Add default menu items at the bottom
return

InfoHandler:
MsgBox Press Shift+Ctrl+U to get an entry field for unicode points (see decodeunicode.org for a list).`n`nAuthor: Simon A. Eugster <simon.eu@gmail.com> / granjow.net
return

+^u::
InputBox, codepoint, Unicode code point, U+
if not ErrorLevel
    Send {U+%codepoint%}
return

2

Это также зависит от того, где вы хотите использовать специальные символы. С приложениями MS Office вам не нужно прибегать к знанию кодов ASCII для определенных символов - например, для ввода диареза (т. Е. Двух точек, которые вы видите над некоторыми символами в словах, таких как наивный), в Word / В Outlook / и т. Д. Вы можете нажать Ctrl + ':' (то есть Ctrl + Shift +;), а затем «i».

Список ярлыков доступен по адресу http://word.mvps.org/FAQs/General/InsertSpecChars.htm ... просто прокрутите вниз до «Международные символы».

Я не знаю, поддерживают ли подобные приложения ярлыки в приложениях, не принадлежащих Office.


2

Linux (включая приложения Qt / KDE)

Как упоминалось в JMD, вы можете удерживать Ctrl- Shift, набирать u1f4a9и отпускать, чтобы набирать U + 1F4A9 в приложениях GTK + (включая программы GNOME, Firefox, Chromium и LibreOffice, даже в KDE). Некоторые программы также поддерживают ввод в последовательности Ctrl- Shift- U, 1, f, 4, a, 9, Enter.

К сожалению, это не работает в приложениях Qt (включая программы KDE, Mathematica и VLC). Для символов BMP есть метод ввода Unicode IBus. Для включения откройте настройки IBus и добавьте метод ввода «Other - unicode (m17n)» ( должны быть установлены два пакета ibus- m17n и ibus-qt4 ). Когда курсор находится в текстовой области, активируйте метод ввода (используя панель инструментов IBus или сочетание клавиш). Будучи активным, метод ввода позволяет вам ввести Ctrl- Shift-, Uа затем 4 шестнадцатеричных цифры, чтобы ввести соответствующий символ Unicode. Это работает только для персонажей BMP.

(Проверено под Ubuntu.)


Не работает на KDE для меня ..
Джек

где я могу найти предпочтения IBus?
Анаркат

1

Возможно, не совсем то, что вы спрашиваете, но это то, что я искал. В Windows 10 вы можете нажать Win+ .или Win+, ;чтобы открыть браузер Emoji:

введите описание изображения здесь

Как вы можете видеть на изображении выше, вы также можете искать, просто набрав.

Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.