如何使用十六进制代码键入Unicode字符?


77

这是在Windows中,但是其他操作系统的答案可能对其他人很方便。

大多数指南说出一些效果,例如“按住Alt键并在小键盘上键入代码”。这对于十进制代码(如“ A”的65)有效,但不适用于十六进制代码(如“ A”的U + 0041)。

一些应用程序提供了其他功能,这些功能允许键入十六进制Unicode字符代码然后进行转换。Word允许您键入代码(例如200f),然后通过键入Alt-X将其转换为Unicode。

我正在寻找一种可以与标准输入配合使用的通用方法。


1
对于不包含从A到F的十六进制字符的unicode字符,此方法很好用对于十进制代码,应阅读:有许多不使用AF的十六进制数字。就像10,那不是十...
Arjan

1
当我需要输入u + 23AF时,这对我毫无用处。
威尔

4
我的观点是:您也不能使用数字键盘键入u + 0041(十六进制41,十进制65)之类的东西(因为这样一来您需要输入65而不是41)-fileformat.info/info/info/unicode/char/0041因此,使用Alt-trick 可以很好地适用于十进制代码,但不适用于十六进制代码
Arjan

1
@Will:“ alt + NN ...”方法要求使用十进制,而不是字符位置的十六进制表示法。Unicode使用十六进制。因此,如果要键入Unicode表示的“ U + 23AF”,则需要将hex == 23AF转换为十进制== 9135,然后键入“ alt + 9135”。那是唯一提供的通用方法。但是:如果您当前选择的字体没有填充“ U + 23AF”位置(或者如果它不是Unicode字体,那么您想要的字符可能仍不会在文本字段或文档中出现)。
Kurt Pfeifle

@Arjan:您不要使用“ alt + nnn”方法键入十六进制字符。您仅输入十进制字符代码。这就是为什么您无法在数字小键盘上以“ alt + 1234”的形式直接输入“ U + 1234”字符串(不包含任何讨厌的“ af”字符),但是您需要将hex == 1234转换为dec = = 4660,然后在您(MAY)获得所需的内容之前键入“ alt + 4660” 。因此,您的陈述“使用Alt技巧对十六进制代码不起作用”准确地说明了问题所在,但您自己却没能理解它:-)
Kurt Pfeifle 2010年

Answers:


23

只要您能够/允许更改注册表设置,harrymc的答案就很好。

如果没有,则可以使用Windows计算器附件将十六进制转换为十进制。默认模式不会执行此操作:XP和Vista具有“科学模式”,而Windows 7、8、8.1和10具有“程序员”模式。

选择“ 十六进制”,然后键入您的十六进制数字。然后更改为以十进制为基数,以十进制查看等效值。这是您在按住Alt键的同时需要在数字小键盘中键入的数字。

可能取决于输入语言,并且您可能需要在小数点后加零。


您也可以set /a在命令窗口中使用;-)进行计算。要将hex = 4321转换为十进制,只需键入set /a 4*16*16*16+3*16*16+2*16+1,结果将显示为17185
Kurt

3
或者,set /a 0x4321也将显示17185。–
Marcks Thomas

6
答案是误导性的,因为当使用十进制数(超出ASCII范围(> 127)时,没有提到需要前导零)。如果要键入U + 23AF,因此将23AF转换为十进制9135,然后尝试使用Alt 9135,则会得到“»”(U + 00BB)。您需要键入Alt 09135(使用数字键盘)以获取正确的字符。
Jukka K. Korpela 2013年

8
使用十进制数字的方法取决于“输入语言”(作为Microsoft概念),因此结果因系统和程序而异。例如,在大多数Windows程序中,将系统语言设置为英语或其他西方语言时,只能以这种方式键入Windows Latin 1字符。然后,如果n> 255的任何Alt 0n都将以“模256”工作,即,通过除以256并取余数,将n减小到0 ... 255的范围。
Jukka K. Korpela 2013年

2
这个答案是错误的。Alt + 0nnn(0-255)输入系统ANSI代码页中的字符(例如1252)。如上所述,输入的值为模256。Alt + nnn(0-255)(不带前导零)输入系统OEM代码页中的字符(例如437或850)。但是,前31个代码不是普通的ASCII控制字符,而是在运行DOS的1980年代PC上为这些字符显示的标志符号。在Windows API中,后者对应于通过将MB_USEGLYPHCHARS字节解码为Unicode时使用标志MultiByteToWideChar
Eryk Sun

39

如何在Microsoft Windows中输入Unicode字符中找到了这一点:

我在Windows XP和Windows 2003上对此进行了测试。无论您使用哪种语言设置,该方法都可以使用,但是键入起来最麻烦:

  1. 按住Alt键。
  2. 按数字键盘上的+(加号)键。
  3. 键入十六进制的unicode值。
  4. 释放Alt键。

las,这似乎需要注册表设置。它已经在我的计算机上设置了,但是一些读者报告说这种方法不适用于他们,这可能就是原因。如果您不知道注册表是什么,请不要尝试此操作。在下 HKEY_CURRENT_USER\Control Panel\Input Method,将EnableHexNumpad设置为“ 1”。如果必须添加它,请将类型设置为REG_SZ。

您应该先注销,然后在此注册表更改后登录,甚至重新启动。


1
如果我不知道注册表是什么,那么我也不知道怎么尝试。
Vanuan 2012年

5
如果您不知道注册表是什么,则永远不要触摸它。向您认识的人寻求帮助。
Wug 2013年

+1但有两件事:(i)在Firefox和IE中,如果您要键入的十六进制代码包含与菜单的Alt + [letter]快捷方式相对应的左撇子,则菜单会下拉,而您不会得到你的角色(IE和Firefox都中断E&F,在Firefox上是B,记事本和winkey + R“运行”框一样工作正常);(ii)REG_SZ可能会在右键单击的新条目菜单中显示为“注册表字符串”
Chris H

这应该适用于所有应用程序吗?我可以在记事本,notepad ++,Firefox甚至Excel中使用它,但不能在Word,Outlook,PowerPoint或Lync中使用它。这是在W7上。
Didier L

3
嗨,哈里克。如何输入十六进制中的字母?示例: "👉" = 👉 -在我按下Falt菜单命令后,将在Windows上执行该命令。转换为十进制(128073)且不添加前导零不起作用。
Matas Vaitkevicius

17

在Mac OS X上:在“系统偏好设置”中打开“国际”,然后在“输入菜单”中选择“ Unicode十六进制输入”以将此选项添加到输入菜单。听起来很明显,但这在乌克兰语和越南语之间的一长串语言中很好地隐藏了。选中后,按住Option键并输入4位十六进制代码。

同样在OS X上:计算器可以设置为程序员模式(Cmd-3),该模式允许输入十进制,八进制和十六进制代码,然后将其显示为ASCII或Unicode。但是,复制将给出一个代码,而不是等效的字符。任何人?

(对于Windows,请参阅如何在Microsoft Windows中输入Unicode字符;有关其他输入法,请参阅Wikipedia。)

在超级用户上:

并进入极端:


9

在Ubuntu(及其变体,例如LinuxMint)中,您可以通过按Ctrl+ Shift+,u然后按Unicode值并按Enter输入Unicode值,例如:

Ctrl+ Shift+ u 263a然后输入收益:

文字:☺
屏幕截图:替代文字

您可能可以将其与AutoHotkey结合使用,以简化输入或在Windows中进行可能的输入。


2
不幸的是,它仅适用于GTK +应用程序。
机械蜗牛

2
您也可以在键入代码时按住Ctrl-Shift,这样可以避免以后再按Enter。
机械蜗牛

1
我找到了一个更好的解决方案:您可以使用结合变音符号的Unicode在任何前面的字符上添加重音符号。Unicode 0301-0308对拼音很有用。例如:“ a” + [ctrl] [shift] [u] + 0301 [return]->á。拼音清单:o-> 0301;ò-> 0300;ō-> 0304;ŏ-> 0306;ö-> 0308;参见en.wikipedia.org/wiki/Combining_character#Unicode_ranges
emf

6

我写了一个小的基于AutoHotkey的Unicode输入工具,因为没有找到更好的解决方案。您可以使用Shift+ Ctrl+ 插入unicode字符U

Unicode对话框

基本上,它将条目转换为unicode字符,并在光标位置“键入”它。

它不支持6位unicode字符。另外,如果您有一个输入字段,其中所有文本都因失去焦点而被选中,那么所有文本都将被覆盖(我想我记得一个旧的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 /中输入一个diaresis(即,您在某些字符上方看到的两个点,例如天真)在Outlook / etc中,您可以按Ctrl +':'(即Ctrl + Shift +;),然后按'i'。

http://word.mvps.org/FAQs/General/InsertSpecChars.htm上有可用的快捷方式列表...只需向下滚动到“国际字符”即可。

我不知道是否有任何非Office应用程序都支持类似的快捷方式。


2

Linux(包括Qt / KDE应用程序)

如JMD所述,您可以按住Ctrl- Shift,键入u1f4a9和release以便在GTK +应用程序(包括GNOME程序,Firefox,Chromium和LibreOffice,甚至在KDE下)中键入U + 1F4A9。有些程序还支持打字序列Ctrl- - ShiftU1f4a,。9Enter

不幸的是,这在Qt应用程序(包括KDE程序,Mathematica和VLC)中不起作用。对于BMP字符,有一个Unicode IBus输入法。要启用,请打开IBus首选项并添加“其他-unicode(m17n)”输入法(必须安装两个软件包ibus-m17nibus-qt4)。当光标在文本区域中时,激活输入法(使用IBus工具栏或键盘快捷键)。而激活时,输入方法可以键入Ctrl- Shift- U后跟4个十六进制数字,来输入对应的Unicode字符。不过,这仅适用于BMP字符。

(在Ubuntu下测试。)


对我而言,不适用于
杰克,

在哪里可以找到IBus偏好设置?
anarcat

1

也许不完全是您的要求,但这正是我想要的。在Windows 10上,您可以按Win+ .Win+ ;打开表情符号浏览器:

在此处输入图片说明

如上图所示,您还可以通过简单地输入进行搜索。

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.