Назад | Перейти на главную страницу

загрузка файлов JS и CSS на веб-страницу в виде китайских иероглифов

Это странно. Я разработал минимальную веб-страницу http: //localhost/Default.htm на сервере IIS Windows 10, который демонстрирует ошибку.

<!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 выдает ошибку

Uncaught SyntaxError: недопустимый или неожиданный токен

Ответ удивителен

污牥⡴挧⤧

Заголовки ответов выглядят нормально

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

Uncaught SyntaxError: недопустимый или неожиданный токен

Контент много

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

Файл script.css похож на

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

Теперь, если я загружаю файлы по отдельности в том же браузере Chrome (в Инструменты разработчика> Сеть> щелкните правой кнопкой мыши script.js и откройте в новом окне)

Они правы. Эта проблема кажется очевидной только для файлов, связанных со страницами.

FireFox загружает все файлы, но выдает те же ошибки, что и Chrome

SyntaxError: недопустимый символ [Подробнее] script.js: 1: 2

Ответ

alert('x');

IE и Edge просто работают и у них нет проблем (я никогда не думал, что скажу так) с этой страницей.

Лечебные действия, которые я использовал с пулами приложений, кодировками, кэшированием, шифрованием диска, типами MIME. Ничего из того, что я пробовал, не работает. Я думаю, что я каким-то образом повредил IIS при работе с iisnode, поскольку это второй сервер IIS, у которого была такая же проблема. Более ранний сервер одинаково влиял на все веб-браузеры, что приводило к одинаковым китайским / корейским / японским символам.

Я в недоумении. Любые подсказки будут полезны

Спасибо, Лекс Ли.

Оказывается, кодировка страницы, ссылающейся на скрипт или файл css, влияет на то, как содержимое файла интерпретируется в браузере.

Тег script имел атрибут charset (устаревший), который, если он не присутствует, по умолчанию используется для кодировки страницы для Chrome и, возможно, Firefox. Возможно, они по-прежнему определяют кодировку указанного файла js или css, используя кодировку ссылающейся страницы.

Похоже, что Edge (и IE), FF и Chrome по-разному интерпретируют эту кодировку.

Я изменил кодировку страницы Default.htm, и страница заработала. Искал не в том месте (файлы js и css). Каким образом нужно закодировать файл Default.htm в UTF16 LE, для меня загадка.