За последние 24 часа нас посетили 15810 программистов и 1666 роботов. Сейчас ищут 905 программистов ...

Очередная проблема с кодировкой

Тема в разделе "PHP для новичков", создана пользователем SForce, 27 ноя 2016.

  1. SForce

    SForce Новичок

    С нами с:
    26 июн 2016
    Сообщения:
    6
    Симпатии:
    0
    Здравствуйте.
    В очередной раз встречаюсь с проблемой кодировок. И кто их только наплодил.....
    В общем, скачал скрипт для редактирования БД MySQL, скрипт основан на Ajax, в котором я не бум-бум.
    Он был рассчитан на импортных пользователей, поэтому с русским языком там разумеется были проблемы. Я ее порешал за исключением последнего момента. Объясню на картинках.
    Вот так выглядит страница:
    [​IMG]
    Нажимаю на фамилию "Петров", чтобы дописать туда имя "Сергей":
    [​IMG]
    Затем нажимаю Enter и происходит следующее:
    [​IMG]
    В БД заносится такая же фигня. Страничка и сама БД в кодировке cp1251_general_ci.

    В чем может быть дело?
     
  2. Deonis

    Deonis Старожил

    С нами с:
    15 фев 2013
    Сообщения:
    1.521
    Симпатии:
    504
    Ajax работает с кодировкой UTF-8.
     
  3. SForce

    SForce Новичок

    С нами с:
    26 июн 2016
    Сообщения:
    6
    Симпатии:
    0
    У меня эта страничка будет взаимодействовать с другими таблицами, которые в cp1251 (кодировка изменению там не подлежит). Как тут можно выйти из положения?
     
  4. Deonis

    Deonis Старожил

    С нами с:
    15 фев 2013
    Сообщения:
    1.521
    Симпатии:
    504
    topas нравится это.
  5. KING_PHP

    KING_PHP Активный пользователь

    С нами с:
    18 апр 2015
    Сообщения:
    154
    Симпатии:
    3
    Адрес:
    Волгоград
    cp1251_general_ci. Поставь во всех сравнениях в базе utf8_unicode_ci открой файлы базы и попробуй все файлы в cp1251 перевести UTF8
    Перед переводом кодировок сделай копии фалов. Может поможет...
     
  6. zahermaher

    zahermaher Новичок

    С нами с:
    27 сен 2014
    Сообщения:
    169
    Симпатии:
    14
    воу воу палехче
     
  7. topas

    topas Активный пользователь

    С нами с:
    16 авг 2006
    Сообщения:
    2.258
    Симпатии:
    36
    Ребят. Строки вида \u041F - это не проблема кодировки
    Это сериализация кириллических символов в JSON.

    При сохранении объекта используется функция json_encode без флага JSON_UNESCAPED_UNICODE

    https://php.ru/manual/function.json-encode.html
     
    denis01 нравится это.
  8. Deonis

    Deonis Старожил

    С нами с:
    15 фев 2013
    Сообщения:
    1.521
    Симпатии:
    504
    @topas, начало проблемы не на сервере, а на клиенте.
     
  9. topas

    topas Активный пользователь

    С нами с:
    16 авг 2006
    Сообщения:
    2.258
    Симпатии:
    36
    @Deonis, почему вы так думаете?
     
    denis01 нравится это.
  10. Deonis

    Deonis Старожил

    С нами с:
    15 фев 2013
    Сообщения:
    1.521
    Симпатии:
    504
    @topas, проблема у ТС возникает после сохранения отредатированных данный. На клиенте изменил значение поля, ajax-ом отправил на сервер и сохранил в БД. И вот то, что попадает на сервер и сохраняется в базе, мы наблюдаем на последнем скрине.
     
  11. topas

    topas Активный пользователь

    С нами с:
    16 авг 2006
    Сообщения:
    2.258
    Симпатии:
    36
    @Deonis
    Ну не знаю, мне почему-то кажется что проблема одинаково может скрываться как на серверной части так и на клиентской. За JS я подобного поведения не встречал, а вот с функцией json_encode были эти самые проблемы. Поэтому собственно и предположил что надо смотреть момент сериализации на сервере перед записью в БД