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

84928
Will

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

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

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

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

69
* Это прекрасно работает для символов Юникода, которые не включают шестнадцатеричные символы от A до F. * должно читать: * для десятичных кодов *. Есть много шестнадцатеричных чисел, которые не используют AF. Как 10, что не десять тогда ... Arjan 14 лет назад 1
Это бесполезно для меня, когда мне нужно набрать u + 23AF. Will 14 лет назад 1
Моя точка зрения такова: вы не можете набирать такие вещи, как u + 0041 (шестнадцатеричный 41, десятичный 65), также используя цифровую клавиатуру (поскольку тогда нужно будет набрать 65, а не 41) - http://www.fileformat.info/info / unicode / char / 0041 Итак, использование Alt-трюка * отлично работает для десятичных кодов, но не для шестнадцатеричных кодов *. Arjan 14 лет назад 4
@Will: метод «alt + NN ...» ожидает * десятичное *, а не шестнадцатеричное представление позиции символа. Юникод использует hex. Поэтому, если вы хотите ввести то, что Unicode представляет как «U + 23AF», вам необходимо преобразовать hex == 23AF в десятичное == 9135, а затем набрать «alt + 9135». Это * единственный * общий метод, который предлагается. *** Но: *** Требуемый символ может по-прежнему не отображаться в текстовом поле или документе должным образом, если выбранный в данный момент шрифт не заполнен местом «U + 23AF» (или если это не шрифт Unicode в первое место!). Kurt Pfeifle 13 лет назад 1
@Arjan: вы не вводите *** шестнадцатеричные *** символы с помощью метода «alt + nnn». Вы вводите только *** десятичные *** коды символов. Вот почему вы не можете набирать даже прямые строки «U + 1234» (которые не содержат ни одного из ваших ненавистных символов «af») на вашей цифровой клавиатуре как «alt + 1234», но вам необходимо преобразовать hex == 1234 в dec = = 4660, а затем введите «alt + 4660», прежде чем (** МОЖЕТ **) получить то, что вы хотите. Таким образом, ваше утверждение «использование Alt-трюка не работает для шестнадцатеричных кодов» точно решает проблему, но вы упустили понять это сами :-) Kurt Pfeifle 13 лет назад 0
А для тех, кто пришел сюда, желая отключить «Control + Shift + u», это обсуждается [здесь] (https://superuser.com/q/358749/96867). Styne666 5 лет назад 0

8 ответов на вопрос

37
harrymc

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

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

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

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

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

если я не знаю, что такое реестр, то я не знаю, как попробовать ни того, ни другого. Vanuan 12 лет назад 1
Если вы не знаете, что такое реестр, вы никогда не должны его трогать. Попросите кого-нибудь, кого вы знаете, о помощи. Wug 11 лет назад 3
+1, но несколько вещей: (i) в Firefox и IE, если шестнадцатеричный код, который вы пытаетесь ввести, содержит букву, соответствующую сочетанию клавиш Alt + [буква] для меню, меню выпадает, и вы не получить вашего персонажа (это разрыв E & F на обоих, A на IE и B на Firefox, блокнот работает нормально, как и окно winkey + R "run"); (ii) REG_SZ может появиться в новом элементе меню при щелчке правой кнопкой мыши как «Строка реестра» Chris H 8 лет назад 0
Это должно работать во всех приложениях? Я получил его для работы в блокноте, notepad ++, Firefox и даже Excel, но не в Word, Outlook, PowerPoint и Lync. Это на W7. Didier L 8 лет назад 0
@DidierL: Я думаю, это будет работать в приложениях, которые не используют функции клавиатуры. harrymc 8 лет назад 0
На самом деле в этих приложениях он игнорирует + и принимает только десятичные значения. Но я не могу заставить десятичную форму работать в других приложениях, и раздражает иметь 2 разных метода с 2 разными значениями. Я удивлен, что это не работает должным образом во всех приложениях MS Office. Didier L 8 лет назад 0
@DidierL: Office - не самое упорядоченное программное обеспечение в мире. Если вы ищете общий метод, я нашел [утилиту UnicodeInput] (http://www.fileformat.info/tool/unicodeinput/), а также статью [стандартные способы ввода символов Unicode] (http: // www .fileformat.info / наконечник / Microsoft / enter_unicode.htm). harrymc 8 лет назад 0
Спасибо, я в последнее время довольно много изучал стандартные способы, и я предпочел бы избегать утилиты (вероятно, она будет работать, но я не уверен, что мне все еще разрешат использовать ее даже в краткосрочной перспективе). Я просто надеялся получить подтверждение того, должен ли он работать в Office (2013). Didier L 8 лет назад 0
21
Mike Hanson

Ответ 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 Kurt Pfeifle 13 лет назад 0
В качестве альтернативы, `set / a 0x4321` также отобразит 17185. Marcks Thomas 11 лет назад 3
Ответ вводит в заблуждение, потому что он не упоминает, что ведущий ноль необходим при использовании десятичного числа вне диапазона Ascii (> 127). Если вы хотите набрать U + 23AF и, следовательно, преобразовать 23AF в десятичное, 9135, а затем попробовать использовать Alt 9135, вы получите «» »(U + 00BB). Вам нужно набрать Alt 09135 (используя цифровую клавиатуру), чтобы получить правильный символ. Jukka K. Korpela 10 лет назад 5
Метод с использованием десятичных чисел зависит от «языка ввода» (как концепция Microsoft), поэтому результаты зависят от системы и программы. Например, в большинстве программ Windows, когда системный язык установлен на английский или другой западный язык, таким образом можно вводить только символы латинского алфавита Windows 1. Любой Alt 0n для n> 255 будет тогда работать «по модулю 256», то есть с уменьшением n до диапазона 0 ... 255 путем деления на 256 и взятия остатка. Jukka K. Korpela 10 лет назад 8
Точно так же, как упомянуто @Jukka, [страница, на которую я ссылался в своем ответе] (http://www.fileformat.info/tip/microsoft/enter_unicode.htm), также предполагает, что вам нужно префикс ноль, и это зависит на языке ввода. Arjan 8 лет назад 0
@ JukkaK.Korpela, я годами неправильно понимал, что Alt + nnnn требовалось четыре цифры, и никогда не мог понять, почему десятичные значения Unicode> 999 не будут работать. Это потому что Alt + nnnn это _really_ Alt + 0nnn ... Alt + 0nnnn. Я мог бы поцеловать тебя. JMD 7 лет назад 0
Этот ответ неверен. Alt + 0nnn (0-255) вводит символ из кодовой страницы ANSI системы (например, 1252). Введенное значение по модулю 256, как указано выше. Alt + nnn (0-255) без начального нуля вводит символ из кодовой страницы OEM системы (например, 437 или 850). Однако первые 31 код не являются обычными управляющими символами ASCII, а представляют собой глифы, которые отображались для этих символов на компьютерах 1980-х годов, работающих под DOS. В Windows API последнее соответствует использованию флага MB_USEGLYPHCHARS при декодировании байтов в Unicode через MultiByteToWideChar. eryksun 6 лет назад 2
это не работает - как уже упоминалось, это зависит от выбранной кодовой страницы. Alt + 0nnnn работал для меня только в Word, где-нибудь еще это терпит неудачу. Обратите внимание, что ответ имеет много положительных отзывов и помечен как принятый, поэтому он очень вводит в заблуждение людей, которые ищут ответ и изо всех сил пытаются воспроизвести ваше решение, которое просто не работает. Mikhail V 5 лет назад 0
17
Arjan

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

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

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

А вот на Super User:

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

9
JMD

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

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

Текст: ☺
Снимок экрана:alt text

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

К сожалению, это работает только в приложениях GTK +. Mechanical snail 11 лет назад 1
Вы также можете удерживать нажатой клавишу Ctrl-Shift во время ввода кода, что позволяет избежать необходимости нажимать Enter впоследствии. Mechanical snail 11 лет назад 2
Я нашел лучшее решение: Вы можете добавить знаки ударения к любому предшествующему символу, используя Юникод, объединяющий диакритические знаки. Юникод 0301 - 0308 полезен для пиньинь. например: «a» + [ctrl] [shift] [u] + 0301 [return] -> á. Список пиньинь: ó -> 0301; Х -> 0300; ō -> 0304; ŏ -> 0306; ö -> 0308; см. http://en.wikipedia.org/wiki/Combining_character#Unicode_ranges emf 11 лет назад 1
4
Simon A. Eugster

Я написал небольшой инструмент ввода 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  return 
2
Chris J

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

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

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

1
Mechanical snail

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 для меня .. Jack 10 лет назад 0
где я могу найти предпочтения IBus? anarcat 5 лет назад 0
0
Aske B.

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

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