аватар Автор: Сергей Касаткин | 01 мая 2014 12:04

Статьи / jQuery /

Проблемы с кодировкой в jQuery Ajax и PHP

Многие разработчики уже не раз сталкивались с множеством проблем с кодировкой в jQuery Ajax и PHP. Давайте разберём причины их возникновения.

Я априори надеюсь, что никто не делает страницу на сервере и клиенте в разных кодировках...

1. Перекодируйте все страницы в utf-8, так как данная кодировка мультиязычна и с ней у Вас в будущем не возникнет проблем.

2. Если Вы передаёте данные в jQuery Ajax методом GET, возможно у Вас возникла проблема с передачей текста (данных) в кириллице (на русском языке). Почему так? Так как IE, например, передаёт данные не в utf-8. Используем encodeURIComponent

$.ajax({
    dataType: 'html',
    type: "GET",
    url:  "ajax.php",
    data: 'query='+encodeURIComponent('Русский текст'),
    success: function(data){
        alert(data)
    }
});


И русский текст передаётся нормально, а, например, не в знаках вопроса.

3. Для справки, правильно писать utf-8 (везде писать так!), а не utf8, windows-1251, а не windows1251 и тд. Из-за этого тоже могут быть проблемы. Например, в IE, так как он с трепетом относится в правильному написанию. До сих, до сих пор...

В случае с Ajax в PHP частью обработки данных



4. Не забывайте в заголовке прописывать, в какой кодировке Вы хотите принять данные. Пишется в самом начале документа.

// в начале страницы php
header('Content-Type: text/plain; charset=utf-8');

// вручную перекодируем полученные данные
$name = iconv('UTF8','CP1251',$_GET['name']);


5. Если Вы записываете данные в базу данных, то не забывайте дать понять серверу, в какой кодировке они ему придут/уйдут/откуда так придут/как записать

mysql_query("SET character_set_results = 'utf-8', character_set_client = 'utf-8', character_set_connection = 'utf-8', character_set_database = 'utf-8', character_set_server = 'utf-8'", $db);


Если у Вас проблемы, то пишите в комментариях. Разберёмся)
 



Похожие статьи


Комментарии к статье (vk.com)