【问题标题】:AutoHotkey: Writing special characters to a fileAutoHotkey:将特殊字符写入文件
【发布时间】:2021-09-19 21:38:15
【问题描述】:

我正在尝试将度数符号写入文件,但我只得到特殊字符问号符号。我试过用 UTF-8 编码打开文件,但它没有改变任何东西。有没有办法做到这一点?

这就是我正在尝试的:

#NoEnv
SetWorkingDir %A_ScriptDir%

zml := FileOpen("zml.xml", "rw", UTF-8)
zml.write("°")
zml.close()

【问题讨论】:

  • 无法复制这个,当我打开记事本中生成的文件时,它对我来说很好用。一些可能会解决您问题的事情:{删除旧的 XML 文件并允许 ahk 重新生成它,重新启动您的计算机}您能否给我们更多信息,了解您使用什么程序来查看 write 是否成功?
  • 我试过你的代码,对我来说效果很好。确保您使用的是“AutoHotkeyU64.exe”并尝试将您的文件保存为带有 BOM 的 UTF-8。

标签: autohotkey


【解决方案1】:

来自文档:“如果支持 Unicode,Number 是 0 到 0x10FFFF 之间的 Unicode 字符代码(或 [v1.1.21] 之前的 0xFFFF);否则它是 0 到 255 之间的 ANSI 字符代码。”

zml.write(chr(176)) 有效。

176 是度数符号的 ASCII 码。

zml.write(chr(0x00B0)) 也可以。

0x00B0 是度数符号的 Unicode 编码

zml := FileOpen("zml.xml", "rw", UTF-8)
zml.write(chr(176))                      ; also works: zml.write(chr(0x00B0))
zml.close()

是否启用 Unicode 编码;可以检查:

MsgBox % A_IsUnicode ? "Unicode" : "ANSI"

在我的机器 windows 代码页上:1252

ahk 版本:1.1.33.02

ahk 脚本文件保存为 UTF-8

【讨论】:

    【解决方案2】:

    引用Why are the non-ASCII characters in my script displaying or sending incorrectly?:

    简答:将脚本另存为带有 BOM 的 UTF-8。

    虽然 AutoHotkey 支持 Unicode 文本,但它已针对向后兼容性进行了优化,这意味着默认为 ANSI 编码,而不是国际上更推荐的 UTF-8。 AutoHotkey 不会自动识别 UTF-8 文件,除非它以字节顺序标记开头。

    【讨论】:

      猜你喜欢
      • 2021-01-18
      • 1970-01-01
      • 2018-09-29
      • 2018-05-22
      • 2021-05-26
      • 2012-03-25
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多