Webkit突然开始提供不同编码的脚本?

时间:2018-06-27 14:41:53

标签: utf-8 character-encoding webkit

因此,上周,我们的一个应用程序开始显示一个奇怪的错误:标志显示为€标志。经过一番挖掘之后,我注意到通过格式化功能显示的每个价格都发生了这种情况。因此,检查devtools中的源代码可以发现为什么我们看到一个不同的字符:

  return "€ " + x1 + ",-"

因此,看起来脚本提供的编码与UTF-8不同。源代码清楚地在该行上显示了欧元符号,但Chrome devtools中的“源”选项卡表示不同。

我在Firefox,IE 11和Edge正确显示欧元符号的多个浏览器中对其进行了测试。 Opera没有,这看起来像是Webkit问题?

如果我在Chrome(ctrl + shift + R)中完全刷新页面,则一切看起来都还不错,并且所有欧元符号都正确呈现。

This question指出显示€字符是因为ISO-8859-1用于渲染(不带有欧元符号)。 Webkit是否可以选择与UTF-8不同的编码来解析JavaScript文件?

1 个答案:

答案 0 :(得分:2)

Giacomo Catenazzi的上述评论为我指明了正确的方向。该应用程序托管在Java后端上,因此具有一个login.htmlapp.html页面,Java后端充当index。我知道app.html<meta charset="utf-8">中有一个<head>标签,但是评论激发了我检查login.html的过程,我注意到它缺少元标记

login.html加载应用程序脚本文件。因此,当用户登录时,Chrome浏览器将在登录页面上获取脚本文件而没有特定的编码,并且当用户移至应用程序页面时,将从缓存中缓存(编码错误)脚本文件。这解释了为什么刷新会修复所有问题(从服务器重新获取脚本),也解释了为什么这种情况“突然”发生。登录页面最近进行了更改,以加载脚本文件。

TLDR;确保每个提取脚本的HTML文件的<meta charset="utf-8">中都有一个<head>