【问题标题】:electron ipc renderer to main process - euro sign (€) becomes 'Ôé¼'电子 IPC 渲染器到主进程 - 欧元符号 (€) 变为 'Ôé¼'
【发布时间】:2018-05-21 21:06:24
【问题描述】:

我在电子框架中从 ipcRenderer 发送到 ipcMain 的字符串存在一些编码问题。

渲染进程:

let test: String = "abc€123";
console.log(test); // prints "abc€123"
electron.ipcRenderer.send('testMessage', test);

主要流程:

ipcMain.on('testMessage', (event, arg) => {
    console.log(arg); // prints "abcÔé¼123"
});

为什么主进程将字符串打印为“abcÔé¼123”? 该值被保存到数据库中并被保存为垃圾而不是实际的€符号。

编辑:主进程中的console.log("€") 也在控制台中显示'Ôé¼'

【问题讨论】:

  • 那么问题可能是您使用数据库的方式而不是您发布的代码。确保您的文件是 UTF-8。
  • 你对我的文件,源代码 .js 文件到底是什么意思?
  • 是的。我不确定您的应用会发生什么,但请确保 html 也是 utf8 并且具有正确的字符集。
  • 我的 html 字符集设置为 utf-8。此外,如果我将该字符串手动放入数据库,它会在之后正确存储和加载。编写 sql 语句的文件也是 utf8 编码的。还有什么想法吗?

标签: angular character-encoding electron ipc


【解决方案1】:

问题实际上不在于编码。原来是我用来保存到sql db的数据类型。

我使用 node-mssql 并且不得不将数据类型更改为 NVarChar:

request.input('test', db.sql.NVarChar, "€");

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2022-01-11
    • 2018-10-10
    • 1970-01-01
    • 2021-12-04
    • 2021-08-19
    • 2020-04-03
    • 2017-03-25
    • 1970-01-01
    相关资源
    最近更新 更多