За последние 24 часа нас посетили 18019 программистов и 1681 робот. Сейчас ищут 1144 программиста ...

Проблема с json_encode и русскими буквами

Тема в разделе "PHP для новичков", создана пользователем simple, 8 апр 2011.

  1. simple

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

    С нами с:
    17 сен 2010
    Сообщения:
    56
    Симпатии:
    0
    скрипты работают в UTF-8, есть многомерный массив, созданный из выборки таблицы mysql,в нем присутствуют русские слова, кодирую этот массив json_encode() для передачи его ajaxom клиенту, на выходе все русские слова становятся null.
    В чем проблема? ведь кодировка стоит utf-8. Пробовал напрямую без ajaxa, тоже самое json_encode упорно не пропускает кириллицу, хотя в теории должна работать ведь под unf-8. Если брать строку а не массив и конвертировать его перед json_encode функцией iconv('cp1251','utf-8','текст') то в строке русские буквы кодируются в unf-8, т.е все нормально. Но почему так, если в скрипте стоит заголовок header ('Content-type: text/html; charset=utf-8'); зачем еще нужно дополнительно вызывать iconv? Да жаль что iconv не работает с массивами, так что проблема не решена. Помогите кто сталкивался с этим.
     
  2. MiksIr

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

    С нами с:
    29 ноя 2006
    Сообщения:
    2.339
    Симпатии:
    44
    Видимо база в 1251 отдает данные. Скажите после коннекта базе SET NAMES 'utf-8'
     
  3. siiXth

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

    С нами с:
    14 мар 2010
    Сообщения:
    1.447
    Симпатии:
    1
    ну сделайте по деревянному - foreach iconv
     
  4. igordata

    igordata Суперстар
    Команда форума Модератор

    С нами с:
    18 мар 2010
    Сообщения:
    32.408
    Симпатии:
    1.768
    сет неймс или в конфиге мускула выставить вместо виндовой - utf