Як ви вводите символи Unicode за допомогою шістнадцяткових кодів?


76

Це в Windows, але відповіді для інших операційних систем можуть бути корисними для інших.

Більшість посібників говорять про те, що "утримуйте клавішу Alt і введіть код на клавіатурі". Це добре працює для десяткових кодів (наприклад, 65 для "A"), але не для шістнадцяткових кодів (наприклад, U + 0041 для "A").

Деякі додатки надають інші засоби, які дозволять вводити шістнадцятковий код символів Unicode та перетворювати їх. Word дозволяє ввести код (наприклад, 200f), а потім перетворити його в Unicode, ввівши Alt-X.

Я шукаю загальний метод цього, який буде працювати зі стандартним входом.


1
Це добре працює для символів unicode, які не включають шестигранні символи від A до F., слід читати: для десяткових кодів . Існує безліч шістнадцяткових цифр, які не використовують AF. Як 10, що тоді не десять ...
Арджан

1
Це марно для мене, коли мені потрібно набрати u + 23AF.
Буде

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

1
@Will: метод "alt + NN ..." очікує десяткового , а не шістнадцяткового позначення позиції символів. Unicode використовує шістнадцятковий. Отже, якщо ви хочете ввести те, що 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 для перетворення з шістнадцяткової у десяткову. У режимі за замовчуванням цього не вийде: XP та Vista мають "Науковий режим", тоді як Windows 7, 8, 8.1 та 10 мають режим "Програміст".

Виберіть шістнадцяткову основу та введіть свій шістнадцятковий номер. Потім перейдіть Dec підстави , щоб побачити еквівалентну значення в десяткової системі числення. Це число, яке потрібно ввести на цифровій клавіатурі, утримуючи клавішу Alt .

Це може залежати від мови введення, і вам може знадобитися префікс нуля до десяткового значення.


ви можете також обчислити за set /aдопомогою командного вікна ;-). Щоб перетворити шістнадцятковий = 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 (використовуючи numpad), щоб отримати потрібний символ.
Jukka K. Korpela

8
Метод використання десяткових чисел залежить від "мови введення" (як концепція Microsoft), тому результати залежать від системи та програми. Наприклад, у більшості програм Windows, коли для системної мови встановлено англійську або іншу західну мову, таким чином можна вводити лише символи Windows Latin 1. Будь-який Alt 0n для n> 255 буде працювати "модулем 256", тобто з n, зменшеним до діапазону 0 ... 255, діленням на 256 та взяттям решти.
Jukka K. Korpela

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

39

Знайдено це в розділі Як ввести символи Unicode в Microsoft Windows :

Я перевірив це на Windows XP та Windows 2003. Цей метод працює незалежно від будь-яких мовних налаштувань, але є найбільш громіздким для введення:

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

На жаль, це, як видається, вимагає налаштування реєстру. Це вже було встановлено на моєму комп’ютері, але деякі читачі повідомляють, що цей метод не працював для них, і це, мабуть, саме тому. Якщо ви не знаєте, що таке реєстр, не спробуйте цього. У розділі HKEY_CURRENT_USER\Control Panel\Input MethodВстановіть EnableHexNumpad значення "1". Якщо вам доведеться його додати, встановіть тип REG_SZ.

Ви повинні вийти з системи, а потім увійти після зміни реєстру або навіть перезавантажити.


1
якщо я не знаю, що таке реєстр, то я не знаю, як спробувати жодне.
Вануан

5
Якщо ви не знаєте, що таке реєстр, ви ніколи не повинні торкатися його. Попросіть когось, кого ви знаєте, про допомогу.
Вуг

+1, але кілька речей: (i) у Firefox та IE, якщо шістнадцятковий код, який ви намагаєтеся ввести, містить письмо, що відповідає ярлику Alt + [letter] для меню, меню падає, і ви не отримайте свого персонажа (ця перерва E&F на обох, A на IE та B на Firefox, блокнот працює чудово, як і вінкет + R "біг"); (ii) REG_SZ може з'явитись у новому меню вводу правою кнопкою миші як "Рядок реєстру"
Chris H

Це має працювати у всіх додатках? Я змусив його працювати в блокноті, блокноті ++, Firefox і навіть Excel, але не в Word, Outlook, PowerPoint і Lync. Це на W7.
Дідьє Л

3
Привіт, harrymc. Як я набираю букви, які містяться у шістнадцятковій формі? приклад: "👉" = 👉 - після того, як я натиснув Fкоманду alt, меню буде виконуватися у Windows. Він не летить з перетворенням у десятковий (128073), не додаючи провідні нулі.
Матас Вайткевічус

17

У Mac OS X: відкрийте "Інтернешнл" у налаштуваннях системи та в меню вводу виберіть "Unicode Hex Input", щоб додати цю опцію до меню введення. Звучить очевидно, але це добре приховано у довгому списку мов між українською та в'єтнамською. Якщо вибрано, утримуйте Опція та введіть чотиризначний шестигранний код.

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

(Для Windows див. Як ввести символи Unicode в Microsoft Windows ; про інші способи введення див. Вікіпедію .)

І ось на Super User:

І йти в крайнощі:


9

У Ubuntu (та його варіантах, як LinuxMint) ви можете ввести значення Unicode, натиснувши Ctrl+ Shift+, uа потім значення Unicode та Enter, наприклад:

Ctrl+ Shift+ u 263aпотім введіть врожайність:

Текст: ☺
Скріншот:alt текст

Можливо, ви зможете з'єднати це з AutoHotkey для легшого введення або можливого введення в Windows.


2
На жаль, він працює лише у додатках GTK +.
Механічний равлик

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

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

6

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

Діалогове вікно Unicode

В основному, він перетворює запис в символ 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 / У перспективі / тощо ви можете натиснути 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 та додайте метод введення "Інше - unicode (m17n)" (два пакети ibus-m17n та ibus-qt4 повинні бути встановлені). Коли курсор знаходиться в текстовій області, активуйте метод введення (використовуючи панель інструментів IBus або комбінацію клавіш). Під час активного введення спосіб введення дозволяє вводити Ctrl- Shift- Uз чотирма шістнадцятковими цифрами для введення відповідного символу Unicode. Це працює лише для символів BMP.

(Тестовано в Ubuntu.)


Не працює для KDE для мене ..
Джек

де я можу знайти налаштування IBus?
anarcat

1

Можливо, не саме те, що ви просите, але це те, що я шукав. У Windows 10 можна натиснути Win+ .або Win+, ;щоб відкрити браузер смайлів:

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

Як ви бачите на наведеному вище зображенні, ви також можете шукати, просто ввівши текст.

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.