Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #1 (permalink)  
Старый 30.08.2015, 11:55
Профессор
Отправить личное сообщение для Эдди Посмотреть профиль Найти все сообщения от Эдди
 
Регистрация: 19.06.2010
Сообщений: 279

Кодировка при выводе данных (ajax)
Не понимаю. Сайт в кодировке utf8 без BOM.

В БД в одной таблице сравнение в cp1251_general_ci.
ajax выводит данные текстовых полей нормально, если использую:
iconv('CP1251','UTF-8', $row['blablabla']);

В другой таблице сравнение utf8_general_ci.
Текстовое поле не выводится ВООБЩЕ.
Ни null, ни кракозябры. Вообще пусто.
Числовые поля - нормально.

На что обратить внимание?
Ответить с цитированием
  #2 (permalink)  
Старый 30.08.2015, 11:57
Профессор
Отправить личное сообщение для laimas Посмотреть профиль Найти все сообщения от laimas
 
Регистрация: 14.01.2015
Сообщений: 12,989

Сообщение от Эдди
На что обратить внимание?
На кодировку подключения SQL и тип передаваемых данных - JSON не работает с CP1251.
Ответить с цитированием
  #3 (permalink)  
Старый 30.08.2015, 12:00
Профессор
Отправить личное сообщение для Эдди Посмотреть профиль Найти все сообщения от Эдди
 
Регистрация: 19.06.2010
Сообщений: 279

Сообщение от laimas Посмотреть сообщение
На кодировку подключения SQL и тип передаваемых данных - JSON не работает с CP1251.
Так не работает таблица в кодировке utf-8.
Это? mysql_query("SET NAMES utf8");
Тип json
Ответить с цитированием
  #4 (permalink)  
Старый 30.08.2015, 12:41
Профессор
Отправить личное сообщение для laimas Посмотреть профиль Найти все сообщения от laimas
 
Регистрация: 14.01.2015
Сообщений: 12,989

Именно "пустое" в случае CP1251 и не латиница вернет JSON. На сервере надо искать причину.
Ответить с цитированием
  #5 (permalink)  
Старый 30.08.2015, 12:52
Профессор
Отправить личное сообщение для Эдди Посмотреть профиль Найти все сообщения от Эдди
 
Регистрация: 19.06.2010
Сообщений: 279

Сообщение от laimas Посмотреть сообщение
Именно "пустое" в случае CP1251 и не латиница вернет JSON. На сервере надо искать причину.
Блн. Тогда проще перевести снова таблицу в CP1251 и воспользоваться iconv
Ответить с цитированием
  #6 (permalink)  
Старый 30.08.2015, 12:58
Профессор
Отправить личное сообщение для laimas Посмотреть профиль Найти все сообщения от laimas
 
Регистрация: 14.01.2015
Сообщений: 12,989

Сообщение от Эдди
Тогда проще перевести снова таблицу в CP1251
Может наоборот? И вообще странно иметь половину данных в 1251 и половину в UTF. Можно держать в 1251 наряду с UTF, но английское, оно все равно один байт на символ будет, и кодировка подключения как UTF-8 не будет помехой. В случае национальных символов такая кодировка вернет кракозябры.
Ответить с цитированием
  #7 (permalink)  
Старый 30.08.2015, 13:09
Профессор
Отправить личное сообщение для Эдди Посмотреть профиль Найти все сообщения от Эдди
 
Регистрация: 19.06.2010
Сообщений: 279

БД создавалась 15 лет назад.
Пару лет назад я сайт перевел на unf-8. И часть таблиц тоже конвертировал.
Но такая хрень, что проблемы получаются только с конвертированными в utf8.
Может, конвертировал неправильно. Но как, уже не помню.
Ответить с цитированием
  #8 (permalink)  
Старый 30.08.2015, 13:17
Профессор
Отправить личное сообщение для laimas Посмотреть профиль Найти все сообщения от laimas
 
Регистрация: 14.01.2015
Сообщений: 12,989

Не должно быть проблем с UTF. Выполните этот код сохраненный в utf, результат?

echo json_encode('abcdef - ') . 
json_encode(iconv('utf-8','windows-1251','абвгд - ')) .
json_encode('иклмно', JSON_UNESCAPED_UNICODE);


Открывайте отладчик и смотрите, что возвращает сервер на запрос - если ошибок нет на нем, то пустая строка, иначе ошибка. Но начинать надо с сервера.
Ответить с цитированием
  #9 (permalink)  
Старый 30.08.2015, 16:47
Профессор
Отправить личное сообщение для Эдди Посмотреть профиль Найти все сообщения от Эдди
 
Регистрация: 19.06.2010
Сообщений: 279

Проблема решается установкой mysql_query("SET NAMES utf8");
В общем, она в БД. Надо на досуге внимательно ее проверить и привести в соответствующее состояние.
Ответить с цитированием
  #10 (permalink)  
Старый 30.08.2015, 16:51
Профессор
Отправить личное сообщение для laimas Посмотреть профиль Найти все сообщения от laimas
 
Регистрация: 14.01.2015
Сообщений: 12,989

Сообщение от Эдди
Проблема решается установкой mysql_query("SET NAMES utf8");
А это тогда что?

Это? mysql_query("SET NAMES utf8");

Я так предполагал, что соответствующая кодировка соединения у вас указывается, а ее получается не было?
Ответить с цитированием
Ответ



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

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


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
При каком объеме вызова AJAX появляется задержка? hoax AJAX и COMET 0 14.08.2014 02:38
событие при редактирование данных в грид demi ExtJS 1 20.08.2013 11:37
ajax передача данных с setInterval Segol Общие вопросы Javascript 0 07.07.2013 09:36
Кодировка при использовании Ajax Nichloas AJAX и COMET 9 17.09.2009 16:06
Вывод данных единожды, при открытии окна? Ggorsh Events/DOM/Window 1 28.04.2009 01:04