我正在尝试输入一些包含字母的 Unicode 字符。我使用的是 Windows 7,但 Windows 8 中也出现了此问题。例如
答案1
您似乎使用的输入法是 Fileformat.info 页面上的“通用”方法如何在 Microsoft Windows 中输入 Unicode 字符:按下,使用数字键盘键Alt输入,输入十六进制数字的 Unicode 数字,松开。虽然非常有用,但这种方法并不是通用的。首先,它需要 Windows 注册表设置,而该设置通常默认为关闭;但您显然已经同意此设置。其次,按下 键入字符可能会由您使用的软件处理。显然在您的 Firefox 版本中,浏览器会处理。但即使您可以解决这个问题,也无法帮助您输入 U+1F3BB。原因是“通用”方法的第三个基本限制:它只适用于 U+FFFF 以下的字符,即基本多语言平面 (BMP) 中的字符。许多新的图标字符已分配到 BMP 之外。+AltAltAltF
关于与快捷键分配的冲突,似乎使用Shift 键与 Alt 键一起使用可解决问题。也就是说,在启动时同时按下 Shift 和 Alt 并保持按下状态,直到输入十六进制数字。在 Win 10 中的 Firefox 84 中测试。也适用于 Chrome
BMP 限制由注释中的观察结果举例说明:尝试使用该方法输入 U+10400 会导致 Ѐ,即带有重音符号的西里尔字母 Е,U+0400。因此,当您尝试使用该方法输入 10400 时,前导 1 将被忽略。(换句话说,输入的十六进制数取模 10000 十六进制。)
但是,正如 phuclv 的回答所说,您可以输入非 BMP 字符作为代理对。您需要查阅 Fileformat.info 等资源来找出代理值(或费力地计算它们)。
对于输入非 BMP 字符,复制粘贴通常是最实用的方法。当然,你首先需要复制一些东西;你可以使用在线字符表,或者我的完整 Unicode 输入实用程序,或者 Microsoft Word 中的字符选择器(它超越了 BMP,与 Windows 字符选择器即 CharMap 不同)。
答案2
正如所提到的Jukka K. Korpela 的回答,如果要输入十六进制值的字符,则必须按+(数字键盘) 。Alt
通常在这种情况下,大多数应用程序中的Alt+ 键letter将被阻止激活菜单。但是,Firefox 和其他一些应用程序可能会选择以不同的方式捕获键盘事件,因此行为会有所不同。请参阅如何防止 Firefox 键盘快捷键干扰 Unicode 输入?。
对于非骨形态发生蛋白你需要的字符使用代理对输入因为 Windows 始终使用 UTF-16。例如,U+1F3BB 在 UTF-16 中表示为 U+D83C U+DFBB,因此您必须将其输入为Alt++D83C然后Alt+ +DFBB。您可以使用类似这样的工具https://r12a.github.io/app-conversion/获取代理对。或者使用电源外壳
$c = [char]::ConvertFromUtf32(0x1F3BB)
输出:
“U+{0:X4} U+{1:X4}”-f [uint]$c[0],[uint]$c[1] 暂无说明,留下第一条!
尽管如此,还有其他内置进入方式任何Windows 中的 Unicode 字符,甚至是 BMP 之外的字符。
使用 JavaScript
copy
函数直接从浏览器将所需字符复制到剪贴板。它适用于大多数现代浏览器,如 Firefox 或 Chrome/Chromiumcopy("\u25A0") // Only applicable for characters in the BMP (⩽ U+FFFF) copy("\u{1F3BB}") // Applicable for all characters (U+0000 to U+10FFFF) copy(String.fromCodePoint(0x1F3BB))
打开写字板,输入十六进制代码点值(如 1F3BB)以及可选
U+
前缀,然后按Alt+ X。此快捷方式也适用于微软 Word和自由办公室使用 PowerShell 直接输入字符,或将其复制到剪贴板
scb "`u{1F3BB}" # or Set-Clipboard "`u{1F3BB}" # or [char]::ConvertFromUtf32(0x1F3BB) | Set-Clipboard # or [char]::ConvertFromUtf32(0x1F3BB) | scb # or [char]0x1F3BB | Set-Clipboard
另一种选择:
[char]::ConvertFromUtf32(0x1F3BB) | clip "`u{1F3BB}" | clip
对于较旧版本的 PowerShell,你需要
Add-Type -AssemblyName System.Windows.Forms [Windows.Forms.Clipboard]::SetText("`u{1F3BB}") # or [Windows.Forms.Clipboard]::SetText([char]::ConvertFromUtf32(0x1F3BB))
之后将字符粘贴到您想要的任何位置
在 Windows 中还有其他方法,无需任何第三方工具,例如打字或者复制和VB脚本或 JavaScript,但它们比较笨重。
话虽如此,大多数时候你应该使用表情符号面板。这适用于表情符号和许多常见符号,并且使用起来非常快捷方便。不再需要记住 Unicode 代码点。只需按Windows+. (period)或Windows+; (semicolon)并键入即可搜索
答案3
我们可以完全避免输入十六进制字符的麻烦,只需将它们转换为十进制值即可。有许多在线转换器可供使用,例如这. 之后我们可以按alt+ decimal value
。
例如,25CF
转换为十进制值时,9679
按下时显示alt为●。按下数字键时,请务必记住使用数字键盘。