在Windows上为Electron应用程序设置默认键盘布局(无法正确复制UTF-8文本)

在Windows上为Electron应用程序设置默认键盘布局(无法正确复制UTF-8文本),windows,utf-8,electron,regedit,keyboard-layout,Windows,Utf 8,Electron,Regedit,Keyboard Layout,我们有这样一个问题,即通过编程方式从electron应用程序复制的波斯语UTF-8文本在粘贴到一个特定应用程序时会丢失编码,并显示为一组?字符。即使通过上下文菜单或Ctrl+C调用手动文本选择和复制命令,该问题仍然存在。从其他来源(如浏览器或文本编辑器)复制的文本可以正常传输 我们尝试了电子的clipboardAPI。我们还实现了自己的帮助程序,以验证问题是否与剪贴板本身有关 在将文本写入剪贴板之前,我们还使用UTF-8 BOM字符预先添加文本 一个有趣的观察结果是,一旦文本粘贴到某个文本编辑器

我们有这样一个问题,即通过编程方式从electron应用程序复制的波斯语UTF-8文本在粘贴到一个特定应用程序时会丢失编码,并显示为一组
字符。即使通过上下文菜单或
Ctrl+C
调用手动文本选择和复制命令,该问题仍然存在。从其他来源(如浏览器或文本编辑器)复制的文本可以正常传输

我们尝试了电子的
clipboard
API。我们还实现了自己的帮助程序,以验证问题是否与
剪贴板本身有关

在将文本写入剪贴板之前,我们还使用UTF-8 BOM字符预先添加文本

一个有趣的观察结果是,一旦文本粘贴到某个文本编辑器中,然后重新打印,目标应用程序就会正确地接收到文本。我们还注意到,当electron应用程序被关注时,将键盘布局更改为目标语言也解决了这个问题。此外,我们意识到Windows在启动应用程序时会将默认键盘布局更改为英语

根据这些线索,我们将NSIS bundler配置为将默认语言设置为波斯语,以便Windows也可以将其检测为默认键盘语言。应用程序的说明显示波斯语为语言,但Windows不尊重该语言,并在启动时将该语言恢复为系统默认语言

我们试着在应用程序启动时运行一个脚本来模拟波斯语字符键盘输入,创建临时输入字段,以及一系列其他的黑客手段来欺骗Windows/应用程序正确处理这些文本。请记住,我们不能依赖用户在每次应用程序启动时执行愚蠢的操作,来修复本来不应该存在的问题。这就是为什么我们需要通过编程来解决这个问题

现在想到的唯一解决方案是强制Windows通过注册表项将我们的应用程序的键盘布局设置为波斯语,用户只需运行一次,或者可以在每次安装后运行。我不熟悉windows注册表项。我的搜索结果是空的,结果集中在如何对整个系统进行搜索,但我们不想弄乱他们的整个系统配置

我们高度赞赏关于这个问题的任何其他建议

您可能发现的其他相关信息:

  • 操作系统是Windows 7
  • 目标应用程序是一个会计软件,供应商拒绝提供任何集成支持,因此我对该应用程序的内部工作原理知之甚少
  • 电子模板的html
    lang
    属性设置为
    fa
  • meta
    charset
    属性设置为
    utf-8
  • 应用程序与
    electron builder
    NSIS
    捆绑在一起