欧元符号在某些机器上出现乱码
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 上开发,这是默认值)。
干杯
我们有一个 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 上开发,这是默认值)。
干杯