gpt4 book ai didi

express - UTF8 字符以 windows-1252 的形式出现,ExpressJS 在 Electron 上运行

转载 作者:行者123 更新时间:2023-12-03 12:24:43 25 4
gpt4 key购买 nike

一点介绍 - 我正在开发的(想要的)软件是基于 Github Electron 构建的桌面应用程序。它被设计成有两个模块——一个 UI 和一个带有 API 的后端,第二个“生活”在隐藏的浏览器窗口中并在 ExpressJS 上运行。这个想法是让 UI 和 API 通过 HTTP 进行通信,以便在需要时将它们解耦。所有文件均采用 UTF-8 格式。

现在问题本身 - 主要 API 路由如下所示:

router.get('/', (request, result) => {
let message = 'Здрасти, коко!';

console.log('Answering with ' + message);
result.json(message);
});

当被调用时(来自浏览器、 postman 或其他),答案如下所示:
{"message":"ЗдраÑти, коко!"}

...带有这些标题:
HTTP/1.1 200 OK
X-Powered-By: Express
Content-Type: application/json; charset=utf-8
Content-Length: 64
ETag: W/"40-3JawFDiTNEinvN6xFO6T9g"
Date: Tue, 20 Dec 2016 06:47:53 GMT
Connection: keep-alive

使用 2cyr工具我发现源编码是 UTF-8,但它只能正确显示为 windows-1252,这让我很困惑。

为了缩小可能性,我将 console.log() 添加到路由处理程序中,并且(让我有点惊讶)我在 Chromium 调试器中得到了相同的“损坏”结果。我怀疑文件的编码,但这就是我得到的:
Petars-Mac:api petar$ file -I api.js
api.js: text/x-c++; charset=utf-8

我想到的最后一件事实际上是将 API 与 Electron 解耦。当我在带有节点的终端中运行它时,我实际上得到了正确的结果——无论是在终端的日志消息中还是在浏览器中的 JSON 答案中。

我做错了什么,我可以做哪些进一步的调试?

最佳答案

所以我们开始吧,就在在 Electron 存储库中发布问题之前 - 这是我能想象在这种情况下犯的最愚蠢的错误。

TL;博士:

<meta charset="utf-8">

我认为为后端打开第二个浏览器窗口并在其中运行一些 JavaScript 就足够了。我忘记的是它实际上仍然是一个浏览器窗口,因此它只需要一点点 HTML 就可以让它知道它提供 UTF-8 内容。

也许不是我,也许我期望 Express 通过 HTTP 提供 UTF-8 是正确的,但不是。无论如何,现在一切正常。

关于express - UTF8 字符以 windows-1252 的形式出现,ExpressJS 在 Electron 上运行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41236820/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com