Eo_Narique 15 декабря 2014 0 5
суть: была задача — написать парсер, взять полученную информацию и записать в ресурсы.
в modx я новичок, поэтому, недолго думая, написал класс для добавления напрямую в таблицу modx_site_content.
все бы прошло как по маслу, но почему-то в базу записываются кракозябры. проверил — везде кодировка utf8: в базе, в документе и в отправленном запросе. где-то есть косяк, но найти его не могу.

я знаю, что можно средствами modx это провернуть, и так я и сделаю в конце концов, но хочется понять, почему так происходит.
пример кракозябр êîíòåíò
5 комментариев
Fi1osof1
Fi1osof 15 декабря 2014г в 12:14 #
везде кодировка utf8: в базе, в документе и в отправленном запросе.
Важно не в отправляемом запросе, а в получаемом ответе. Ведь вы получаете ответ от другого сервера, там может быть не utf-8. Откройте сайт-источник и посмотрите в браузере какую он кодировку отдает. Скорее всего в windows-1251. Поэтому полученные данные надо сначала перекодировать.
$string = mb_convert_encoding($string, 'utf-8', 'windows-1251');
А потом уже сохранять и что угодно делать.
Eo_Narique1
Eo_Narique 15 декабря 2014г в 12:41 #
не помогло, кракозябры другие стали конÑ
отошел от сайта источника, попытался записать текст, введенный руками, та же история. следовательно не в том дело
Fi1osof1
Fi1osof 15 декабря 2014г в 13:32 #
Проблема была в использовании стороннего класса для работы с БД, который не устанавливал автоматически кодировку сопоставления (а в ручную тоже не прописали). Перешли на работу через xPDO, все зашуршало.
Eo_Narique1
Eo_Narique 15 декабря 2014г в 13:37 #
спасибо, Николай, выкидываю значит запчасти жигулевские, заказываю от танка
Fi1osof1
Fi1osof 15 декабря 2014г в 13:45 #
Пожалуйста!
Авторизуйтесь или зарегистрируйтесь (можно через соцсети ), чтобы оставлять комментарии.