Я только что столкнулся с этой же проблемой и нашел исправление.
В ответ на вопрос Мартжина проблема заключается в том, что эти символы спецификации URF-8 делают недействительным javascript, когда клиент ожидает чистый ASCII. Таким образом, он скажет, что есть ошибка в char 1, строка 1 или что-то подобное, в основном, в самом начале файла, потому что это делает кодовый файл похожим на опечатку в первых нескольких байтах скрипта.
В моем случае у меня есть сайт в IIS, который является приложением ASP.NET, и приложение под ним, которое также является приложением ASP.NET. Это вызвало некоторые сложности с наследованием файла web.configs, и решение состояло в том, чтобы поместить тег, который отменяет наследование с этого момента.
Затем я обнаружил, что все мои .js на дочернем сайте выдавали ошибку для этого глупого символа кодировки UTF-8, который был первыми 3 байтами каждого файла. Я достаточно уверен, что это вызвано некоторой путаницей в httphandlers из моего двухуровневого решения для web.configs.
Однако мое решение заключалось в том, чтобы преобразовать файлы .js обратно в чистый ASCII, поскольку именно это отправлял IIS и ожидал клиент. Для меня у меня есть build.bat, который копирует все веб-файлы, удаляет все элементы управления исходным кодом и файлы проекта и помещает их в окончательный каталог сборки для копирования на тестовый или рабочий сервер. Я внес изменение в этот скрипт, чтобы также преобразовать все файлы .js в формат ASCII.
Он использует комбинацию пакета DOS (потому что это то, с чего я начал) и PowerShell (потому что это единственный способ конвертировать без добавления еще большего количества служебных программ):
set DIRTOCONVERT = любой путь, по которому вы хотите конвертировать все файлы для
ECHO удалить символы UTF-8 BOM »? с начала файлов
for / r% DIRTOCONVERT% %% g in (* .js) do (
powershell -команда "gc -en utf8 \" %% g \ "| Out-File -en ascii. \ tmp.txt"
move / y. \ tmp.txt "%% g"
)
Обратите внимание, что несколько человек онлайн (даже в StackOverflow) решили попробовать:
введите badfile.txt> goodfile.txt
но это все еще переносит кодировку UTF-8. Видимо, раньше это не делали.