AJAX та проблеми з кодуванням. AJAX та проблеми з кодуванням Jquery кодування

AJAX та проблеми з кодуванням. AJAX та проблеми з кодуванням Jquery кодування

Ось уже півтора роки в draft-ах припадав пилом пост про надуманість проблем з кодуваннями і т.зв. AJAX-ом.
Щоразу, коли на форумах спливали питання подібного характеру, хотілося дати посилання, на кожен сплеск заходів на блог за запитами “кодування, ajax, проблема” хотілося його опублікувати, але мені здавалося, що піст ще не закінчений, треба ще трохи дописати …
Але буквально сьогодні з'явився дивно схожий пост - ajax, CP1251. Схожий за змістом, але протилежний за змістом.
Тому свій черневічок я вирішив видалити, а розповісти свою "істину" у формі критики ради fxposter-а.

Ні для кого не секрет, що кодуванням отриманих через Ajax даних за замовчуванням приймається UTF-8.

Насправді, це секрет. Багатьом секрет. І багато хто не розуміє чому це так.
Внутрішнє представлення рядків (і регулярних виразів) JavaScript для всіх не-ASCII послідовностей якраз UTF-8.
Звідси і походить т.зв. “проблема” – якщо кодування не вказано явно та використовується нелатиниця, воно буде інтерпретовано як utf-8 послідовність.

Update 29.11Свіже повітря і Давид Мзареулян остудили запал, тому поспішаю уточнити про що саме йтиметься нижче.
Отже - у вас є якийсь ресурс в однобайтовому кодуванні (до ворожки не ходи це буде windows-1251) і ви перейнялися освоїти новий buzzword на ім'я AJAX. Трохи почитавши, ви робите перші несміливі кроки в цьому напрямку і тут же наступаєте на “дитячі граблі”, а потім, трохи віддихавшись, мчіться на форуми з криком про допомогу. І вам цю допомогу нададуть – перероби мовляв, свій ресурс на utf-8… Звісно, ​​звичайно скажете ви і підете переробляти…
Я ж хочу застерегти від таких необачних кроків.

Стандартне рішення, яке навперебій радять усі – "використовуй utf-8 і немає проблем".

І порадники мають рацію – проблем справді не буде.

Просто трафік збільшиться "удвічі". Ті ж дані, той же результат, а трафіку "вдвічі" більше. Ага?

Що ви там кажете щодо порошку?!?

Якщо вам цей фактор здається мало***щим, то на цьому читання треба припинити і почати переробляти свій проект на використання UTF-X,
решті залишу кілька рецептів, які допоможуть уникнути проблем при використанні однобайтових кодувань у т.зв. AJAX-додатках:

  • Перше, воно ж головне – ЗАВЖДИ вказуйте кодування контенту. У будь-якій відповіді сервера з текстовим контентом може бути заголовок Content-Type: your/type; charset=your-charset.
    Найдешевше це зробити, налаштувавши сервер (наприклад у php через default_charset)
  • Вказуйте charset при включенні JavaScript в тіло документа (

     

     

Це цікаво: