Тег скрипта с кодировкой, динамически добавляемый в Юникод-страница заголовка не обрабатывается должным образом

#javascript #jquery #dom #unicode #cross-domain

#javascript #jquery #dom #юникод #междоменный

Вопрос:

В PHP у меня есть страница, заголовок которой задан как юникод. (не через мета-теги. У меня есть PHP, устанавливающий кодировку в UTF-8.)

После отображения страницы мне нужно динамически добавить <script> тег, который ссылается на код другого домена.

В то время как междоменный Javascript, уже упомянутый в HTML страницы, анализируется должным образом, динамически добавляемый удаленный Javascript «Charset» игнорируется.

Следовательно, два JS-файла из одного домена интерпретируются очень по-разному. Тот, который уже был загружен в HTML, обрабатывается должным образом, но тот, который динамически добавляется, обрабатывается неправильно… Несмотря на то, что я предоставляю правильную кодировку.

Вот мой пример кода:

 $('#footer').after( $('<script>').attr('type','text/javascript').attr('charset','ISO-8859-1').attr('src','//remoteJavascript.js') );
  

Я также использую jQuery 1.6.2.

Комментарии:

1. Интересно, что у вас это не работает (у меня это работает до тех пор, пока я устанавливал charset раньше src ), но в целом script charset атрибут в любом случае не поддерживается кроссбраузерно. Выполнение сценария с использованием кодировки, отличной от той, в которой находится родительская страница, раздражает и непоследовательно; почти всегда лучше изменить сценарий, чтобы он соответствовал кодировке или не полагался на необработанные символы, отличные от ASCII.

2. В конце концов, я обвинил Chrome и заставил свой сайт предоставлять контент в стандартном ISO. Своего рода боль — означает, что мне придется удалить все символы Юникода.

3. Вы все еще можете использовать символы, отличные от ASCII, в строковых литералах JS, используя u экранирование, поэтому обычно это не проблема.