Autohotkey Umlaut脚本可以在我的设备上运行,但不能在朋友机上运行

Autohotkey Umlaut脚本可以在我的设备上运行,但不能在朋友机上运行,autohotkey,Autohotkey,我遇到了一个问题,我为自己制作了一个自动热键脚本,在我的英语键盘上键入德语文本。 由于它对我非常有用,我想与朋友分享它,但奇怪的是,当我尝试在朋友的PC上运行它时,确实会产生奇怪的输出: Ä -> Ä ä -> ä Ö -> Ö ö -> ö Ü -> Ãœ ü -> ü ß -> ß ~根本不起作用,°是唯一起作用的热键 以下是脚本: #NoEnv ; Recommended for performance an

我遇到了一个问题,我为自己制作了一个自动热键脚本,在我的英语键盘上键入德语文本。 由于它对我非常有用,我想与朋友分享它,但奇怪的是,当我尝试在朋友的PC上运行它时,确实会产生奇怪的输出:

Ä -> Ä  
ä -> ä  
Ö -> Ö  
ö -> ö  
Ü -> Ãœ  
ü -> ü  
ß -> ß
~根本不起作用,°是唯一起作用的热键

以下是脚本:

#NoEnv  ; Recommended for performance and compatibility with future AutoHotkey releases.
; #Warn  ; Enable warnings to assist with detecting common errors.
SendMode Input  ; Recommended for new scripts due to its superior speed and reliability.
SetWorkingDir %A_ScriptDir%  ; Ensures a consistent starting directory.\
!+A::
Send, Ä
return
!a::
Send, ä
return
!+O::
Send, Ö
return
!o::
Send, ö
return
!+U::
Send, Ü
return
!u::
Send, ü
return
!s::
Send, ß
return
!e::
Send, €
return
!m::
Send, µ
return
!d::
Send, °
return
!]::
Send, {Alt down}{Numpad1}{Numpad2}{Numpad6}{Alt up}
return
^!#right::
Run C:\Users\cmcdi\Documents\Shortcuts\display64.exe /rotate:90
return

如果您需要更多信息,我很乐意提供。

正如评论中的人所指出的,这可能是一个编码问题,但是在正常发送当前键盘布局中不存在的字符时,您也可能会遇到
Send
的一些意外行为。
解决这个问题的一个好方法是使用指定这些特殊字符,而不必担心任何编码问题

此外,由于您有一行热键,因此可以省略
Return
s并按如下方式操作:

!+A::SendInput, {U+00C4}
!a::SendInput, {U+00E4}
!+O::SendInput, {U+00D6}
!o::SendInput, {U+00F6}
要获取字符的Unicode码,您可以使用例如网站。
我还使用了而不是
Send
,因为这样做是一种很好的做法。尽管在这里没有任何区别(如我上面关于Unicode字符表示法的链接所述)

此外,您的脚本似乎在顶部包含自动生成的ahk代码,该代码指定,这意味着
Send
的所有实例都会自动转换为
SendInput


如果您想要一个好的轻量级脚本,可以删除顶部所有自动生成的代码。里面的东西对你没有任何帮助。

即使你的问题很可能是字符编码问题,我还是决定加入我的特殊字符解决方案。可以键入两个字符来创建特殊字符。 示例“a将写a或sss将写ß”。我还使用“and”来创建像öoré这样的字符。因为我使用的Umlaut远远多于重音aigu,所以我决定“交换”“/”键的功能。因此,要写ö,我先按“/”键,然后按“o”。如果我想写é,我先按Shift+“/”键,然后按e键得到é。这种方法的“缺点”是,如果你需要一个,你需要按“/”键和空格键


看起来像是UTF-8和Cp1252的用法。好吧,这也是我第一次想到的,但我检查了ahk文件,它是UTF-8。那么我应该尝试将它保存在Cp1252中吗?我一回到家就会尝试一下。谢谢!另请参见:@Carroll文件本身没有编码,这完全取决于读取它时使用的字符集。行为建议您的好友PC上的文件读作Cp1252。很抱歉回复太晚。我确实使用ASCII选项保存了该文件,效果很好。非常感谢!
    ;================================== SPECIAL CHARACTERS FOR US KEYBOARD ==================================
:?C*:`` :: ; Turn `{Space} into neutral `, else ` will be used in next vowel.
    Send, ``{Space}{BackSpace}
Return

:?C*:``a::à
:?C*:``i::ì
:?C*:``e::è
:?C*:``o::ò
:?C*:``u::ù
:?C*:``A::À
:?C*:``I::Ì
:?C*:``E::È
:?C*:``O::Ò
:?C*:``U::Ù

:?C*:^ :: ; Turn ^{Space} into neutral ^, else ^ will be used in next vowel.
    Send, {^}{Space}{BackSpace}
Return

:?C*:^a::â
:?C*:^i::î
:?C*:^e::ê
:?C*:^o::ô
:?C*:^u::û
:?C*:^A::Â
:?C*:^I::Î
:?C*:^E::Ê
:?C*:^O::Ô
:?C*:^U::Û

:?C*:`" :: ; Turn "{Space} into neutral ", else " will be used in next vowel.
    Send, +{'}{Space}{BackSpace}
Return

:?C*:`'a::ä
:?C*:`;a::ä
:?C*:`'i::ï
:?C*:`;i::ï
:?C*:`'e::ë
:?C*:`;e::ë
:?C*:`'o::ö
:?C*:`;o::ö
:?C*:`'u::ü
:?C*:`;u::ü
:?C*:`'A::Ä
:?C*:`'I::Ï
:?C*:`'E::Ë
:?C*:`'O::Ö
:?C*:`'U::Ü

:?C*:' :: ; Turn '{Space} into neutral ', else ' will be used in next vowel.
    Send, {'}{Space}{BackSpace}
Return

:?C*:`"a::á
:?C*:`"i::í
:?C*:`"e::é
:?C*:`"o::ó
:?C*:`"u::ú
:?C*:`"A::Á
:?C*:`"I::Í
:?C*:`"E::É
:?C*:`"O::Ó
:?C*:`"U::Ú

:?C*:`'c::ç
:?C*:`'C::Ç
:?C*:ss]::ß
:?C*:sss::ß
:?C*:ae]::æ
:?C*:AE]::Æ
:?C*:oe]::œ
:?C*:OE]::Œ