欧元符号在某些机器上出现乱码

Euro sign is garbled on some machines

我们有一个 Web 应用程序(Java spring mvc 项目)。 我们的服务器 returns jsons 通过 REST API.

这是我们 QA 环境的响应示例:

{currency: "EURO", symbol: "€", multiplier: 1}

这是来自不同环境(Dev)的相同响应:

{currency: "EURO", symbol: "�", multiplier: 1}

知道为什么会发生这种情况吗?

这是因为您的浏览器在后台(在服务器上)完成所有工作后正在绘制字体。这意味着您可以在某个时候正确编码,但一旦浏览器获取它,它就不再编码,并显示浏览器不理解的字符。

您需要在浏览器端 运行 再通过 JavaScript 一次。使用正确的编码对字符串进行简单替换即可解决问题。

好的 - 所以我的问题是 ubuntu 上 运行 的构建机器 (Jenkins)。 构建机器编译和部署我们的应用程序的所有环境都有问题。

我不得不将 gradle 任务更改为使用

编译
tasks.withType(JavaCompile) { options.encoding = 'Cp1252' }

(因为我们在 windows env 上开发,这是默认值)。

干杯