网页链接的JS和CSS文件下载为中文字符

网页链接的JS和CSS文件下载为中文字符

这很奇怪。我设计了一个极简网页http://localhost/Default.htm在演示错误的 Windows 10 IIS 服务器上。

<!DOCTYPE html>
<html>
  <head>
    <script src="script.js"></script>
    <link href="script.css" rel="stylesheet">
    <script src="https://ajax.googleapis.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
  </head>
    <body>  
    <script>
    document.writeln("Got my ");
    </script>
    web page content
    </body>
</html>

一行 script.js 包含以下内容

alert('x');

css 文件是

body {
  font-family: arial;
}

jquery 链接用于检查外部来源。

在 Chrome 上,页面加载并下载这 3 个文件。页面显示

获取我的网页内容

警报未显示,CSS 样式无效

JQuery 脚本没有问题。script.js 文件抛出错误

未捕获的语法错误:无效或意外的标记

反响令人惊讶

污牥⡴挧⤧

响应标头看起来正常

HTTP/1.1 304 Not Modified
Accept-Ranges: bytes
ETag: "f4cca4492325d41:0"
Server: Microsoft-IIS/10.0
X-Powered-By: ASP.NET
Date: Thu, 26 Jul 2018 23:49:32 GMT

Chrome 因 in-page-script.js 而引发第二个错误。这是 Ember.js 的一个插件

未捕获的语法错误:无效或意外的标记

内容很多

⨯ਪ⨠吠敨䌠牨浯⁥湡⁤楆敲潦⁸硥整獮潩獮椠橮捥⁴桴⁥湩瀭条ⵥ捳楲瑰椠瑮桴...

script.css文件类似

潢祤笠਍††潦瑮昭浡汩㩹愠楲污഻紊

现在,如果我在同一个 Chrome 浏览器中单独加载文件(在开发人员工具 > 网络 > 右键单击​​ script.js 并在新窗口中打开)

他们说得对。这个问题似乎只在页面链接文件中出现。

FireFox 加载了所有文件,但抛出了与 Chrome 类似的错误

SyntaxError:非法字符[了解更多] script.js:1:2

答案是

alert('x');

IE 和 Edge 可以正常运行,并且不会对此页面造成任何问题(我从来没想过我会这么说)。

补救措施我尝试过应用程序池、编码、缓存、磁盘加密、mime 类型。我尝试过的方法都没有奏效。我认为我在使用 iisnode 时以某种方式破坏了 IIS,因为这是第二台出现相同问题的 IIS 服务器。之前的服务器对所有 Web 浏览器的影响相同,导致出现相同的中文/韩文/日文字符。

我很困惑。任何线索都会有帮助

答案1

谢谢 Lex Li。

事实证明,引用脚本或 CSS 文件的页面的编码会影响文件内容在浏览器中的解释方式。

script 标签曾经有一个 charset 属性(已弃用),如果不存在,则默认为 Chrome 和 Firefox 页面的字符集。也许它们仍使用引用页面的字符集来确定引用的 js 或 css 文件的字符集。

看起来 Edge(和 IE)、FF 和 Chrome 对字符集的解释不同。

我更改了 Default.htm 页面的字符集,页面可以正常工作。我找错了地方(js 和 css 文件)。Default.htm 文件如何以 UTF16 LE 编码对我来说是个谜。

相关内容