Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #1 (permalink)  
Старый 05.03.2013, 13:31
Аспирант
Отправить личное сообщение для jsjob Посмотреть профиль Найти все сообщения от jsjob
 
Регистрация: 30.01.2009
Сообщений: 42

Кодировка UserJS для Opera
Подключил скрипт к Опере
function fLoad()
{ alert("Работает!");
  return true;
}
function fUnLoad()
{ alert("Не-Работает!");
  return true;
}

onload=fLoad;
onunload=fUnLoad


Если файл сохранять в UTF-8 или UTF-16, то работает, если сохранять в Win-1251 или KOI-8U, то перестаёт работать.

Я рассчитывал, что будут кроказябры в окне Алерта.

1 - Почему не работает если использована другая кодировка?
2 - Где/как определяется кодировка подключаемого скрипта?
2.1 - или какая она д.б. и как Опера различает UTF-8/16?

Спасибо

Последний раз редактировалось jsjob, 05.03.2013 в 13:34.
Ответить с цитированием
  #2 (permalink)  
Старый 05.03.2013, 13:37
Аватар для danik.js
Профессор
Отправить личное сообщение для danik.js Посмотреть профиль Найти все сообщения от danik.js
 
Регистрация: 11.09.2010
Сообщений: 8,804

Дефолтная кодировка для скриптов - UTF-8. Именно как UTF-8 интерпретируется содержимое скрипта. Если оно не соответствует этой кодировке и содержит не-латинские символы, получятся кракозябры, хотя скрипт работать должен вроде. Для подключаемых на страницу скриптов кодировку можно указать либо в серверных заголовках к файлу, либо в атрибуте charset тега script. Для юзерскрипта наверно никак не указать. Да и нафига.
Ответить с цитированием
  #3 (permalink)  
Старый 05.03.2013, 13:46
Аспирант
Отправить личное сообщение для jsjob Посмотреть профиль Найти все сообщения от jsjob
 
Регистрация: 30.01.2009
Сообщений: 42

"на фига" оно не важно. Просто хочу разобраться как Опера работает. Вот почему она различает UTF-8 и UTF-16?
Ответить с цитированием
  #4 (permalink)  
Старый 05.03.2013, 13:51
Аватар для danik.js
Профессор
Отправить личное сообщение для danik.js Посмотреть профиль Найти все сообщения от danik.js
 
Регистрация: 11.09.2010
Сообщений: 8,804

Дружок, ты хотя бы минимальные усилия приложил для понимания этого.
http://ru.wikipedia.org/wiki/UTF-16
Цитата:
Для определения порядка байтов используется метка порядка байтов (англ. Byte order mark). В начале текста записывается код U+FEFF. При считывании, если вместо U+FEFF считалось U+FFFE, значит порядок байтов обратный, поскольку символа с кодом и U+FFFE в Юникоде нет. Так как в кодировке UTF-8 не используются значения 0xFE и 0xFF, можно использовать метку порядка байтов как признак, позволяющий различать UTF-16 и UTF-8.
Ответить с цитированием
  #5 (permalink)  
Старый 05.03.2013, 14:10
Аспирант
Отправить личное сообщение для jsjob Посмотреть профиль Найти все сообщения от jsjob
 
Регистрация: 30.01.2009
Сообщений: 42

Спасибо. Про BOM я знаю, но не ожидал использования в данном случае - отказ от прямого указания кодировки делает систему менее гибкой.
Ответить с цитированием
  #6 (permalink)  
Старый 05.03.2013, 14:15
Аватар для danik.js
Профессор
Отправить личное сообщение для danik.js Посмотреть профиль Найти все сообщения от danik.js
 
Регистрация: 11.09.2010
Сообщений: 8,804

BOM позволяет однозначно определить кодировку. Что в этом плохого?
Ответить с цитированием
  #7 (permalink)  
Старый 05.03.2013, 14:56
Аспирант
Отправить личное сообщение для jsjob Посмотреть профиль Найти все сообщения от jsjob
 
Регистрация: 30.01.2009
Сообщений: 42

Плохо только то, что BOM не позволяет определять не-Юникод
Ответить с цитированием
  #8 (permalink)  
Старый 05.03.2013, 15:03
Аватар для danik.js
Профессор
Отправить личное сообщение для danik.js Посмотреть профиль Найти все сообщения от danik.js
 
Регистрация: 11.09.2010
Сообщений: 8,804

Ну логично. Ибо не-юникод - это однобайтовые кодировки, и в них не нужны никакие Byte Order Mark
Ответить с цитированием
Ответ



Опции темы Искать в теме
Искать в теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
history рассширение для браузеров не поддерживающих pushState, replaceState devote Ваши сайты и скрипты 187 13.08.2015 10:40
Решение проблемы кодировок для AJAX и PHP без iconv (cp1251 в AJAX) Serge Ageyev AJAX и COMET 10 24.04.2013 20:48
Нужны светлые головы для создания нового web-проекта Kostanakis AJAX и COMET 3 03.10.2011 11:20
JSON или JSONP для запросов на другой сервер? Метод GET, для длинных сообщений? Kotakota jQuery 5 23.08.2011 23:12
Вызов скрипта для Opera Andrew_S Общие вопросы Javascript 8 25.09.2008 12:23