Jak wpisywać znaki Unicode za pomocą kodów szesnastkowych?

77

Dzieje się tak w systemie Windows, ale odpowiedzi dla innych systemów operacyjnych mogą być przydatne dla innych.

Większość przewodników mówi coś na temat „przytrzymaj klawisz Alt i wpisz kod na klawiaturze”. Działa to dobrze dla kodów dziesiętnych (jak 65 dla „A”), ale nie dla kodów szesnastkowych (jak U + 0041 dla „A”).

Niektóre aplikacje zapewniają inne udogodnienia, które umożliwiają wpisywanie, a następnie przekształcanie kodów znaków szesnastkowych Unicode. Program Word pozwala wpisać kod (np. 200f), a następnie przekonwertować go na Unicode, wpisując Alt-X.

Szukam ogólnej metody robienia tego, która będzie działać ze standardowym wejściem.

Będzie
źródło
1
Działa to dobrze w przypadku znaków Unicode, które nie zawierają znaków szesnastkowych od A do F., powinny brzmieć: w przypadku kodów dziesiętnych . Istnieje wiele liczb szesnastkowych, które nie używają AF. Jak 10, a więc nie dziesięć…
Arjan
1
Jest to dla mnie bezużyteczne, gdy muszę wpisać u + 23AF.
Czy
4
Chodzi mi o to: nie można też wpisywać takich rzeczy jak u + 0041 (szesnastkowy 41, dziesiętny 65) za pomocą klawiatury numerycznej (tak jak trzeba by wtedy wpisać 65 zamiast 41) - fileformat.info/info/unicode/char/0041 Tak więc użycie sztuczki Alt działa dobrze dla kodów dziesiętnych, ale nie dla kodów szesnastkowych .
Arjan
1
@Will: metoda „alt + NN ...” oczekuje dziesiętnej , a nie szesnastkowej notacji pozycji znaku. Unicode używa hex. Więc jeśli chcesz wpisać, co Unicode reprezentuje jako „U + 23AF”, musisz przekonwertować hex == 23AF na dziesiętny == 9135, a następnie wpisać „alt + 9135”. To jedyna ogólna metoda, jaka jest w ofercie. Ale: Poszukiwany znak może nadal nie wyświetlać się zgodnie z oczekiwaniami w polu tekstowym lub dokumencie, jeśli aktualnie wybrana czcionka nie ma wypełnionego miejsca „U + 23AF” (lub jeśli nie jest to czcionka Unicode!).
Kurt Pfeifle
@Arjan: nie wpisujesz znaków szesnastkowych za pomocą metody „alt + nnn”. Wpisujesz tylko dziesiętne kody znaków. Dlatego nie możesz wpisać nawet prostych ciągów „U + 1234” (które nie zawierają żadnych nienawistnych znaków „af”) na klawiaturze numerycznej jako „alt + 1234”, ale musisz przekonwertować hex == 1234 na dec = = 4660, a następnie wpisz „alt + 4660”, zanim ( MAJ ) dostaniesz to, czego chcesz. Więc twoje stwierdzenie „użycie Alt-trick nie działa na kody szesnastkowe” dokładnie rozwiązuje problem, ale sam nie zrozumiałeś go :-)
Kurt Pfeifle

Odpowiedzi:

23

Odpowiedź harrymca jest dobra, pod warunkiem, że możesz / możesz zmienić ustawienia rejestru.

Jeśli nie, możesz użyć kalkulatora systemu Windows do konwersji z systemu szesnastkowego na dziesiętny. Tryb domyślny tego nie zrobi: XP i Vista mają „tryb naukowy, podczas gdy Windows 7, 8, 8.1 i 10 mają tryb„ programisty ”.

Wybierz Baza szesnastkowa , a następnie wpisz liczbę szesnastkową. Następnie przejdź do Dec base, aby zobaczyć równoważną wartość w systemie dziesiętnym. Jest to liczba, którą musisz wpisać na klawiaturze numerycznej, przytrzymując klawisz Alt .

Może to zależeć od języka wejściowego i może być konieczne poprzedzenie zera wartością dziesiętną.

Mike Hanson
źródło
możesz również obliczyć za pomocą set /aw oknie poleceń ;-). Aby przekonwertować hex = 4321 na dziesiętny, po prostu wpisz, set /a 4*16*16*16+3*16*16+2*16+1a wynik pojawi się jako 17185
Kurt Pfeifle
3
Alternatywnie set /a 0x4321wyświetli również 17185.
Marcks Thomas
6
Odpowiedź jest myląca, ponieważ nie wspomina, że ​​zero początkowe jest potrzebne, gdy używa się liczby dziesiętnej poza zakresem Ascii (> 127). Jeśli chcesz wpisać U + 23AF i dlatego przekonwertować 23AF na dziesiętne, 9135, a następnie spróbować użyć Alt 9135, otrzymasz „» ”(U + 00BB). Musisz wpisać Alt 09135 (używając klawiatury numerycznej), aby uzyskać odpowiedni znak.
Jukka K. Korpela,
8
Metoda wykorzystująca liczby dziesiętne zależy od „języka wprowadzania” (jako koncepcja Microsoft), więc wyniki różnią się w zależności od systemu i programu. Na przykład w większości programów systemu Windows, gdy język systemowy został ustawiony na angielski lub inny język zachodni, w ten sposób można wpisywać tylko znaki Windows Latin 1. Każdy Alt 0n dla n> 255 będzie wtedy działał „modulo 256”, tj. Z n zredukowany do zakresu 0 ... 255 przez podzielenie przez 256 i zabranie reszty.
Jukka K. Korpela,
2
Ta odpowiedź jest zła. Alt + 0nnn (0-255) wprowadza znak ze strony kodowej ANSI systemu (np. 1252). Wprowadzona wartość to modulo 256, jak wspomniano powyżej. Alt + nnn (0-255), bez wiodącego zera, wprowadza znak ze strony kodowej OEM systemu (np. 437 lub 850). Jednak pierwsze 31 kodów nie jest zwykłymi znakami kontrolnymi ASCII, ale są glifami wyświetlanymi dla tych znaków na komputerach z lat 80. z systemem DOS. W interfejsie API systemu Windows ten ostatni odpowiada użyciu MB_USEGLYPHCHARSflagi podczas dekodowania bajtów do Unicode za pośrednictwem MultiByteToWideChar.
Eryk Sun,
39

Znalazłem to w Jak wprowadzać znaki Unicode w Microsoft Windows :

Przetestowałem to na Windows XP i Windows 2003. Ta metoda działa niezależnie od ustawień języka, ale najbardziej kłopotliwe jest wpisanie:

  1. Naciśnij i przytrzymaj klawisz Alt.
  2. Naciśnij klawisz + (plus) na klawiaturze numerycznej.
  3. Wpisz szesnastkową wartość Unicode.
  4. Zwolnij klawisz Alt.

Niestety wydaje się, że wymaga to ustawienia rejestru. Jest już ustawiony na moim komputerze, ale niektórzy czytelnicy twierdzą, że ta metoda nie działała dla nich i prawdopodobnie dlatego. Jeśli nie wiesz, co to jest rejestr, nie próbuj tego. Pod HKEY_CURRENT_USER\Control Panel\Input Methodustaw EnableHexNumpad na „1”. Jeśli musisz go dodać, ustaw typ na REG_SZ.

Należy wylogować się, a następnie zalogować po tej zmianie rejestru, a nawet uruchomić ponownie.

harrymc
źródło
1
jeśli nie wiem, co to jest rejestr, to nie wiem, jak spróbować.
Vanuan
5
Jeśli nie wiesz, co to jest rejestr, nie powinieneś go nigdy dotykać. Poproś o pomoc kogoś, kogo znasz.
Wug 17.04.13
+1, ale kilka rzeczy: (i) zarówno w Firefoksie, jak i IE, jeśli kod szesnastkowy, który próbujesz wpisać, zawiera wartość odpowiadającą skrótowi Alt + [litera] dla menu, menu spada i nie zdobądź swoją postać (ten break E&F na obu, A na IE i B na Firefox, notatnik działa dobrze, podobnie jak pole „uruchom” winkey + R); (ii) REG_SZ może pojawiać się w menu nowego wpisu po kliknięciu prawym przyciskiem myszy jako „ciąg rejestru”
Chris H,
Czy to powinno działać we wszystkich aplikacjach? Mam go do pracy w Notatniku, Notatniku ++, Firefox, a nawet Excelu, ale nie w Word, Outlook, PowerPoint ani Lync. To jest na W7.
Didier L,
3
Cześć Harrymc. Jak wpisywać litery zawarte w kodzie szesnastkowym? przykład: "👉" = 👉 - po wciśnięciu Fklawisza alt polecenie menu zostaje wykonane w systemie Windows. Nie leci z konwersją na dziesiętne (128073) bez dodawania zer wiodących.
Matas Vaitkevicius
17

W systemie Mac OS X: otwórz Międzynarodowy w Preferencjach systemowych, a następnie w Menu wprowadzania wybierz „Unicode Hex Input”, aby dodać tę opcję do menu wprowadzania. Brzmi oczywisto, ale jest to dobrze ukryte na długiej liście języków, między ukraińskim a wietnamskim. Po wybraniu przytrzymaj opcję i wpisz 4-cyfrowy kod szesnastkowy.

Również w OS X: Kalkulator można ustawić na tryb programatora (Cmd-3), który umożliwia wprowadzanie kodów dziesiętnych, ósemkowych i szesnastkowych, które są następnie wyświetlane jako ASCII lub Unicode. Jednak Copy da jeden kod, a nie ekwiwalent (y) znaków. Ktoś?

(W systemie Windows zobacz Jak wprowadzać znaki Unicode w systemie Microsoft Windows ; inne metody wprowadzania danych znajdują się w Wikipedii ).

A tutaj na Super User:

I popadając w skrajności:

Arjan
źródło
9

W Ubuntu (i jego wariantach, takich jak LinuxMint) możesz wprowadzić wartości Unicode, naciskając Ctrl+ Shift+, ua następnie wartość Unicode i Enter, na przykład:

Ctrl+ Shift+ u 263anastępnie Enter daje:

Tekst: ☺
Zrzut ekranu:alternatywny tekst

Możesz połączyć to z AutoHotkey dla łatwiejszego wprowadzania danych lub możliwego wprowadzania w systemie Windows.

JMD
źródło
2
Niestety działa tylko w aplikacjach GTK +.
Ślimak mechaniczny
2
Możesz także przytrzymać klawisz Ctrl-Shift podczas pisania kodu, co pozwala uniknąć konieczności naciskania klawisza Enter później.
Ślimak mechaniczny
1
Znalazłem lepsze rozwiązanie: możesz dodać znaki akcentu do dowolnego poprzedzającego znaku, używając Unicode łączącego znaki diakrytyczne. Unicode 0301 - 0308 są przydatne dla Pinyin. na przykład: „a” + [ctrl] [shift] [u] + 0301 [return] -> á. Lista pinyin: ó -> 0301; ò -> 0300; ō -> 0304; ŏ -> 0306; ö -> 0308; patrz en.wikipedia.org/wiki/Combining_character#Unicode_ranges
emf
6

Napisałem małe narzędzie do wprowadzania Unicode oparte na AutoHotkey , ponieważ nie znalazłem lepszego rozwiązania. Możesz wstawić znaki Unicode za pomocą Shift+ Ctrl+ U.

Okno dialogowe Unicode

Zasadniczo konwertuje wpis na znak Unicode i „wpisuje” go w pozycji kursora.

Nie obsługuje 6-cyfrowych znaków Unicode. Ponadto, jeśli masz pole wejściowe, w którym zaznaczony jest cały tekst po utracie ostrości, cały tekst zostanie nadpisany (myślę, że pamiętam, że stara wersja Firefoksa pokazała takie zachowanie).

Jako odniesienie, tutaj źródło AutoHotkey, jeśli chcesz go skompilować samodzielnie:

#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 <[email protected]> / granjow.net
return

+^u::
InputBox, codepoint, Unicode code point, U+
if not ErrorLevel
    Send {U+%codepoint%}
return
Simon A. Eugster
źródło
2

To zależy również od tego, gdzie chcesz użyć znaków specjalnych. Dzięki aplikacjom MS Office nie musisz uciekać się do znajomości kodów ASCII dla niektórych znaków - na przykład, aby wpisać diurezę (tj. Dwie kropki widoczne powyżej niektórych znaków w słowach takich jak naiwny), w Word / Outlook / etc możesz nacisnąć Ctrl + „:” (tj. Ctrl + Shift +;), a następnie „i”.

Lista skrótów jest dostępna na stronie http://word.mvps.org/FAQs/General/InsertSpecChars.htm ... przewiń w dół do „Znaków międzynarodowych”.

Nie wiem, czy jakieś aplikacje inne niż Office obsługują podobne skróty.

Chris J
źródło
2

Linux (w tym aplikacje Qt / KDE)

Jak wspomniałem JMD, możesz przytrzymać Ctrl- Shift, pisać u1f4a9i zwalniać, aby pisać U + 1F4A9 w aplikacjach GTK + (w tym programach GNOME, Firefox, Chromium i LibreOffice, nawet w KDE). Niektóre programy również wspierać pisanie w sekwencji Ctrl- Shift- U, 1, f, 4, a, 9, Enter.

Niestety nie działa to w aplikacjach Qt (w tym programach KDE, Mathematica i VLC). W przypadku znaków BMP istnieje metoda wprowadzania Unicode IBus. Aby włączyć, otwórz preferencje IBus i dodaj metodę wprowadzania „Inne - unicode (m17n)” ( muszą być zainstalowane dwa pakiety ibus-m17n i ibus-qt4 ). Gdy kursor znajduje się w obszarze tekstowym, aktywuj metodę wprowadzania (za pomocą paska narzędzi IBus lub skrótu klawiaturowego). Gdy jest aktywna, metoda wprowadzania pozwala wpisać Ctrl- Shift- Ua następnie 4 cyfry szesnastkowe, aby wprowadzić odpowiedni znak Unicode. Działa to jednak tylko dla znaków BMP.

(Testowane pod Ubuntu.)

Ślimak mechaniczny
źródło
Dla mnie nie działa w KDE ..
Jack
gdzie mogę znaleźć preferencje IBus?
anarcat
1

Może nie dokładnie to, o co prosisz, ale tego właśnie szukałem. W systemie Windows 10 możesz nacisnąć Win+ .lub Win+, ;aby otworzyć przeglądarkę emoji:

wprowadź opis zdjęcia tutaj

Jak widać na powyższym obrazku, możesz także wyszukiwać, wpisując po prostu.

Aske B.
źródło