Проблема с кодировками скрипта
Здравствуйте, появилась большая (для меня) проблема. При подключении на сторонний сайт яваскрипта (<script src="путь на страницу моего сайта"></script>) он работает не коректно. Проблема в том что мой сайт написан на ютф8, а сайт где отображаетса скрипт в другой кодировке, так как в скрипте есть русские слова то они не отображаются коректно и следовательно скрипт не рабочий (в скрипте присутсвует функция replace которая меняет одно слово на другое...). Подскажите пожалуйста как узнать кодировку сайта на котором должен работать скрипт? Или может можно какимто образом прописать русское слово в нескольких кодировках каждое отдельно? (вариант спросить кодировку сайта у владельца не подходить, нужно автоматом это делать)
Зарание благодарен, прошу простить за ошибки в тексте, у нас не учать русский:). |
cкрипты обычно хранятся в UTF <script src="путь на страницу моего сайта"></script>
Cкорее всего это Вы исходник скрипта сохранили в Ansi Cохраняйте скрипт через блокнот в UTF-8 на компутере, потом только подгружайте на сайт |
Проблема не в этом, у меня яваскрипт в ютф8. Но если сторонний сайт (который не на ютф8) подключит мой скриптовый файл (который на ютф8) то он не будет корректно работать. Как с этим справится?
|
Zim_one,
странно - где ваш скрипт - я его выведу тут (Тут Файл скрипта с контентом alert("Привет!") |
Цитата:
http://tanalin.com/blog/2007/07/external-file-encoding/ и гуглом научитесь пользоваться. |
|
function addlinks(){ das = /автомобиль/ig; ast2 = document.body.innerHTML.replace(das,\'<a href=\"#\" $code_class style=\"$code_color $code_shrift $code_size $code_width $code_textdecoration\" onmouseover=\"qwe();\" onmouseout=\"ewq();\">автомобиль</a>\'); document.body.innerHTML=ast2; } var abc = document.createElement(\'div\'); abc.id=\"asd\"; abc.innerHTML = \"<center>\"+banerorimage000111+\"</center>\"; abc.style.position=\"absolute\"; abc.style.left=\"-1000000px\"; abc.style.width=\"100%\"; abc.style.height=\"\"; abc.style.backgroundColor=\"\"; abc.onmouseover=qwe1; abc.onmouseout=ewq; document.body.appendChild(abc); } function qwe(){ document.getElementById(\'asd\').style.left=\"0px\"; if(mouseY>400){ document.getElementById(\'asd\').style.top=mouseY - 300 + \"px\"; } else{ document.getElementById(\'asd\').style.top=mouseY + 200 + \"px\"; } aqwe = 1; } function ewq(){ setTimeout(function(){ if(aqwe !== 1){ document.getElementById(\'asd\').style.left=\"-1000000px\"; } }, 2000); aqwe = 0; } function qwe1(){ aqwe=1; } function mouseEventqwe(eqwe){ eqwe = window.event || eqwe; mouseY=eqwe.clientY + (document.documentElement && document.documentElement.scrollTop || document.body && document.body.scrollTop || 0); } if(addEventListener){ window.addEventListener(\"mousemove\",mouseEventqwe,false); window.addEventListener(\"load\",addlinks,false); } else{ window.attachEvent(\"mousemove\",mouseEventqwe); window.attachEvent(\"load\",addlinks); } там много слешей, некогда щас удалять и возможно еще пхп отрывки кода(нужно бежать). сам скрипт рабочий 100%, но вот ключевое слово "автомобиль" которое должно сменится ссылкой на чужом сайте(не ютф8) будет крокозяброй. Я щяс подумал передавать это слово через ГЕТ параметр в код, вместо вытягивания из БД, может сработает. |
Цитата:
Цитата:
|
javascript.ru в кодировке windows-1251
Загружаю UTF-8 <!DOCTYPE HTML> <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=windows-1251" /> <script type="text/javascript" src="http://hostjs-mybb2011.narod.ru/js/asdsa.js?5"></script> </head> <body> </body> </html> |
Цитата:
|
Цитата:
|
Цитата:
сохрани на рабочий стол - открой в блокноте, - файл сохранить как - внизу покажет текущую кодировку |
Имхо по умолчанию скрипты грузятся в UTF-8 и трансформируются в кодинг страницы, вот для ANSI - точно нужно прописывать
Для UTF-8 - пофег походу атрибут charsetcharset="windows-1251" <!DOCTYPE HTML> <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=windows-1251" /> <script type="text/javascript" src="http://hostjs-mybb2011.narod.ru/js/asdsa.js?5"></script> <script type="text/javascript" charset="UTF-8" src="http://hostjs-mybb2011.narod.ru/js/asdsa.js?5"></script> <script type="text/javascript" charset="windows-1251" src="http://hostjs-mybb2011.narod.ru/js/asdsa.js?5"></script> </head> <body> </body> </html> |
Цитата:
Так или иначе, атрибут charset (на который я давал ссылку выше) решает проблему ТС. Встроенные сюда примеры не будут работать корректно. Кодировка html-документов один фиг utf-8, несмотря на тег meta |
Цитата:
"Windows-1251 выгодно отличается от других 8‑битных кириллических кодировок (таких как CP866, KOI8-R и ISO 8859-5) наличием практически всех символов, использующихся в русской типографике для обычного текста .....она также содержит все символы для близких к русскому языку языков: украинского, белорусского, сербского, македонского и болгарского. Имеет два недостатка............." |
Нун попробовать в ANSI
|
Кодировка страницы windows-1251, кодировка скрипта utf-8, но она явно нигде не указывается. В итоге кракозябры:
http://new-era63.ru/hello-windows1251.php Кодировка страницы windows-1251, кодировка скрипта utf-8, об этом сообщается через атрибут charset скрипта, в итоге все ок: http://new-era63.ru/hello-utf8.php Жать Ctr+F5, иначе (хром как минимум) кодировка кэшируется. |
<!DOCTYPE HTML> <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /> <script type="text/javascript" src="http://hostjs-mybb2011.narod.ru/js/2_asdsa.js"></script> <script type="text/javascript" charset="UTF-8" src="http://hostjs-mybb2011.narod.ru/js/2_asdsa.js"></script> <script type="text/javascript" charset="windows-1251" src="http://hostjs-mybb2011.narod.ru/js/2_asdsa.js"></script> </head> <body> </body> </html> |
Цитата:
|
Для ANSI charset- работает!
(*В Ие 6-7 вообще не подгружается ANSI без указания правильной кодировки в charset в ИЕ8 - ошибка сценария Гугол вообще "имел" эту ANSI - не обращает внимания на charset - одни кракозябры, Так шо пишите скрипты в UTF - 8 |
Цитата:
Начиная с версии Юникода 5.1 для кириллицы выделено четыре раздела: название диапазон кодов (hex) версия Юникода Cyrillic кириллица 0400 04FF 1.1" ............... виндовс 1251 А 410 Б ........ 44E я 44F вопрос в том в каких местах пересекаются |
Deff, для utf-8 тоже работает. смотри мои примеры. В хроме кстати твоя демка всегда показывает Привет!
|
|
Deff, ошибочка. Я имел ввиду 13 пост. 18 - везде кракозябры (в хроме) Как я уже говорил, хром кэширует кодировку. В ФФ третий скрипт отображается корректно, он ниче не кэширует видимо.
Цитата:
Цитата:
|
Часовой пояс GMT +3, время: 21:21. |