【问题标题】:Euro sign is garbled on some machines欧元符号在某些机器上出现乱码
【发布时间】:2015-08-09 12:00:12
【问题描述】:

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

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

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

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

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

任何想法为什么会发生这种情况?

【问题讨论】:

  • 另一种方法是使用“EUR”,即欧元的标准缩写,就像“USD”是美元的标准缩写一样。

标签: java spring encoding utf


【解决方案1】:

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

我不得不更改要编译的 gradle 任务

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

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

干杯

【讨论】:

    【解决方案2】:

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

    您需要在浏览器端使用 JavaScript 再运行一次。使用正确的编码对字符串进行简单替换即可修复它。

    【讨论】:

    • 服务器返回不乱码有可能吗?就像在 env #1 中一样?
    • 您将不得不查看返回的确切字符串。如果您使用完全相同的浏览器并获得不同的结果,那真的很奇怪。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2015-10-04
    • 1970-01-01
    • 2018-03-15
    • 2011-10-12
    • 1970-01-01
    • 2019-04-30
    • 1970-01-01
    相关资源
    最近更新 更多