由于键盘快捷键,无法输入 Unicode

由于键盘快捷键,无法输入 Unicode

我正在尝试输入一些包含字母的 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 之外的字符。

  • 使用 JavaScriptcopy函数直接从浏览器将所需字符复制到剪贴板。它适用于大多数现代浏览器,如 Firefox 或 Chrome/Chromium

    copy("\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)并键入即可搜索

Windows 表情符号面板

如何在 Windows 10 上调出表情符号输入法?

答案3

我们可以完全避免输入十六进制字符的麻烦,只需将它们转换为十进制值即可。有许多在线转换器可供使用,例如. 之后我们可以按alt+ decimal value

例如,25CF转换为十进制值时,9679按下时显示alt为●。按下数字键时,请务必记住使用数字键盘。

相关内容