当前位置: 首页 > 知识库问答 >
问题:

如何在AutoHotKey中使用UTF-8?

邓俊材
2023-03-14

我试图让两个连字符触发短破折号,三个连字符触发长破折号;喜欢

:*?:---=::—
:*?:--=::–

除了工作。以下是我的收获:

:*?:11::

SendLevel 1

Send 2

return

SendLevel 0

:*?:21::3

这部作品(11部产生2111部产生3部)

:*?:--::

SendLevel 1

Send –

return

SendLevel 0

:*?:–-::—

这是同一个脚本,但“1”已被替换为“-”,“2”已被替换为“-”,而“3”已被替换为“-“--”-“应该生成”-“和“--”应该生成”-”,但它不起作用,因为我使用的版本中不完全支持Unicode(AutoHotKey.com上的AutoHotKey_L v1.1.09.04)。

共有3个答案

季城
2023-03-14

编辑:不必费心阅读我的答案,按照Udo Klein的说明去做,这会容易得多,而且效果也会很好。

如何发送Unicode字符使用最后的自动热键版本?(不需要以前的Unicode兼容版本即可工作)

很难找到清晰的信息。为了让初学者(像我一样)明白这一点:

  1. 复制/通过脚本末尾的代码A(它应该在ANSI中编码)
  2. 复制/通过脚本顶部的代码B
  3. 在这里找到您的Unicode字符代码http://www.utf8-chartable.de/unicode-utf8-table.pl
  4. 复制U后面的4个数字
  5. 在代码B中(在您的脚本顶部):更改您需要的密钥(在::之前)
  6. 在代码B中(在脚本的顶部):经过您在2上找到的Unicode。在0x之后(而不是2260)
  7. 保存你的脚本
  8. 双击您的脚本图标,它将替换/更新以前的版本

代码A:

SendUnicodeChar(charCode)
{
VarSetCapacity(ki, 28 * 2, 0)
EncodeInteger(&ki + 0, 1)
EncodeInteger(&ki + 6, charCode)
EncodeInteger(&ki + 8, 4)
EncodeInteger(&ki +28, 1)
EncodeInteger(&ki +34, charCode)
EncodeInteger(&ki +36, 4|2)


DllCall("SendInput", "UInt", 2, "UInt", &ki, "Int", 28)
}


EncodeInteger(ref, val)
{
DllCall("ntdll\RtlFillMemoryUlong", "Uint", ref, "Uint", 4, "Uint", val)}

代码B:

!+^D::  ; when press CTRL+ALT+SHIFT will output "≠"
{ 
SendUnicodeChar(0x2260) 
}
return

(注意空间!)

需要改进的地方:

不知怎的,这个脚本并不适用于这个网站提供的所有unicodehttp://unicode-table.com/,但可能有人会很友好地告诉我们,为什么一些unicode可以工作,而另一些不行,以及如何使其适用于本网站的任何unicode字符。比如说这个http://unicode-table.com/en/0609/不起作用。知道为什么吗?

邵弘伟
2023-03-14

单击另存为,更改编码方案,如下所示:

锺离声
2023-03-14

这个ahk文本文件需要使用UTF8-BOM编码而不是UTF8编码保存

正如在这篇评论中所指出的,发布作为一个更具可见性的答案。

 类似资料:
  • 问题内容: 我正在尝试在mysql数据库中插入阿拉伯字母,但是只存储“ ????”。我正在使用DBCP与mysql数据库连接,这是数据源: 如何在DBCP配置中设置UTF-8编码或如何使用(useUnicode = yes characterEncoding = UTF-8)? 问题答案: 根据DBCP文档,您需要使用带有value 的参数,因此在这种情况下,您应该使用类似以下内容的方法: (注意

  • 问题内容: 我需要在Java Web应用程序中使用UTF-8(servlets + JSP,不使用框架)以支持常规芬兰语文本和西里尔字母,例如特殊情况。 我的设置如下: 开发环境:Windows XP 生产环境:Debian 使用的数据库:MySQL 5.x 用户主要使用Firefox2,但也使用Opera 9.x,FF3,IE7和Google Chrome访问该站点。 如何实现呢? 问题答案:

  • AutoHotkey是一个windows上的开源软件,用于做自动化的处理 将所有用键盘操作和鼠标点击的事件自动化。可以编辑或者录制自己的脚本 为键盘,手柄和鼠标创建快捷键 自动扩展简写。如,键入"btw" 会自动变成 "by the way". 可以创建为自动化脚本创建交互式UI  改变键盘,手柄,鼠标的默认功能 通过 WinLIRC client script.对外部设备的信号进行回应 可以运行

  • 问题内容: 如何在我的API上获得UTF-8支持?此刻,一个字符串输出如下: 代替: 在以下结帐app.js: 问题答案: 连接到响应生成器或创建执行以下操作的中间件: 否则,浏览器将以他喜欢的编码显示内容。 如果这不能帮助您,则DB可能编码错误。 编辑: 由于答案将近5年,API已更改。对于当前的node.js版本,请使用:

  • 问题内容: 我尝试使用cxf-xjc-plugin从Maven项目中的xsd生成Java类。 它运行正常,但是生成的源文件使用特定于平台的编码(在Windows pc上为cp1251)而不是utf-8。如果任何xsd类型在模式注释中包含非拉丁字符,则它们仅在该特定编码中才可读,并且编译器随后会抱怨。 请帮助我强制 utf-8 生成源。 源编码设置为 构建插件的设置如下: 在阅读了xjc的一些较旧的

  • 问题内容: 我看到您可以通过将UTF-16指定为字符集,并且可以通过创建一个新的UTF-16解码器,但是我只能看到指定on 的构造函数的功能。 在读取Java中的任何流时,如何指定如何使用UTF-16? 问题答案: 输入流处理原始字节。当您直接从输入流中读取内容时,所得到的只是字符集无关的原始字节。 根据定义,将原始字节解释为字符需要某种转换:如何将原始字节转换为可读的字符串?“翻译”以字符集的形