Wordpress und Sape — проблема с кодировкой

05.11.2008 | Рубрики: WordPress
Тэги: , ,

Недавно столкнулся с тем, что на одном из блогов ссылки из Sape выводились знаками ЪЪЪЪЪЪ. В FAQ-е Сапы сказано, что при установке на ВП стандартный код нужно дополнить указанием, что используется кодировка utf-8:

<?php
define('_SAPE_USER', 'ххххххххххххххххххххххххххх');
require_once($_SERVER['DOCUMENT_ROOT'].'/'._SAPE_USER.'/sape.php');
$o['charset'] = 'UTF-8';
$sape = new SAPE_client($o);
unset($o);
echo $sape->return_links();
?>

Однако сие действо, довольно успешно работающее на других блогах, на этом не дало решительно никакого эффекта. Попытки менять типы кодировок в базе данных и в мета-тэгах ни к чему не привели.

Покопавшись в весьма внушительном топике по данной теме на форуме самой Сапы, нашел таки работающий вариант. В нем используется перекодировка с windows-1251 (которая и выдает кракозябры) на utf-8. В конечном итоге, код будет выглядеть так:

<?php
define('_SAPE_USER', ' ххххххххххххххххххххххххххх ');
require_once($_SERVER['DOCUMENT_ROOT'].'/'._SAPE_USER.'/sape.php');
$o['charset'] = 'windows-1251';
$sape = new SAPE_client();
echo mb_convert_encoding($sape->return_links(), "UTF-8", "CP1251");
unset($o);
?>

Возможно, это кому-то так же поможет.

Вебсовет

Комментарии (64)

  1. Marina 05.11.2008

    Простите, что не совсем по теме..
    Пожалуйста будьте добры, подскажите на примере, что именно должно быть написано в поле require_once($_SERVER[’DOCUMENT_ROOT’] вместо DOCUMENT ROOT ?
    Я вчера подставляла массу вариантов, но код так и не стал работать :( Правда, он был не саповский, но строчка там такая же.
    Просто у Вас увидела знакомые слова и решила спросить, Вы, скорее всего, разбираетесь и поможете. Объяснять это где-нибудь на форуме - выше моих сил. А рядом никого кто-бы разбирался в этих тонкостях :(
    Заранее спасибо.

    Ответить

    lamabeat

    @Marina, нечего не нужно дописывать.
    $_SERVER[’DOCUMENT_ROOT’] - это директива на языке PHP (спрашивает у глобального супер массива какой адрес у Вашего каталога). Если Вы не админ сервера, Вам особо там не чего указывать. Вы можете проверить что дает Вам код:

    Ответить

  2. Zodios 05.11.2008

    А как установить сапу именно на какую-то отдельную страницу? Я имею в виду что если код сапы добавлять в темплейт он ведь сквозняком пойдет по всему сайту?

    Ответить

  3. Zodios 05.11.2008

    Добавлять код в страницу при написании поста?

    Ответить

  4. Игорь Квентор 05.11.2008

    Marina, а зачем вам менять эту запись? Она ведет в корень сайта, путь к которому может выглядеть примерно как:
    ../usr/local/apache/htdocs/www/ваш_файл.php
    Не зная точного пути, невозможно подставить нужный адрес.
    А код не работает совсем по другой причине. Но не зная, о чем речь, увы поспособствовать не могу :)

    Zodios, код Сапы как раз и ставят в шаблон (в подвале или сайдбаре), чтобы он шел через весь сайт. Если вам нужно исключить какие-то страницы, то вы сможете сделать это в своем аккаунте в Сапе, удалив эти страницы из списка, найденного роботом.

    Ответить

  5. Marina 05.11.2008

    То есть эти слова Document Root вообще не надо заменять указанием пути? Вот я балда. Как есть блондинка. :(
    Я решила, что словосочетание ‘DOCUMENT ROOT’ написано для образца, а вместо него надо подставить свой путь. Прошу прощения за ламерский вопрос. Можете удалить оба коммента, если хотите.
    Спасибо за ответ. :)

    Ответить

  6. Игорь Квентор 05.11.2008

    Не за что! :) Если вы не против, то пусть комменты сохранятся. Может это кому-нить будет полезно.

    Ответить

  7. andryxa 15.11.2008

    Автор спасибо большое нашел твой блог с гугла, и как раз уже долго искал как нормально установить этот долбаный код сапе. СПАСИБО, СПАСИБО, СПАСИБО. БОЛЬШОЕ!

    Ответить

  8. Студент 24.11.2008

    Zodios, просто скачайте плагин “execphp” сможете сапу в виджеты ставить и по блокам раскидывать без лишнего гемороя

    Ответить

  9. felix 15.01.2009

    Такая же проблема, всё кубиками выводилось. Спасибо за подсказку, теперь работает на ура :)

    Ответить

  10. Игорь Квентор 18.01.2009

    felix, рад, что вам пригодилось! :)

    Ответить

  11. DiM 29.01.2009

    Спасибо большое, я тоже долго искал ответ. Все заработало. ура)))

    Ответить

  12. Игорь Квентор 29.01.2009

    Рад, что смог помочь :)

    Ответить

  13. Gotovsky 08.02.2009

    Спасибо огромное!!! Решение помогло!!! Долго же я мучался пока не нашел это.

    Ответить

  14. Игорь Квентор 09.02.2009

    Окей! :)

    Ответить

  15. Lex232 23.02.2009

    Сэнкс! я уже кодировку в файле сейпа пробовал менять, не помогало. Как говориться всё гениальное просто

    Ответить

  16. Игорь Квентор 27.02.2009

    Эт верно :)

    Ответить

  17. Unlexus 03.03.2009

    Огромнейшее спасибо вам!!!А я второй день мучаюсь не зная, что делать уже всевозможные кодировки перепробовал!!! Форум сапы лежит из-за тех работ, но вот наткнулся на ваш и блог и все сделал, все работает уряяяя :-)

    Появился один вопросик, что за код у вас еще там написан “unset($o);”??

    Ответить

  18. Игорь Квентор 03.03.2009

    Unlexus, рад что смог чем-то помочь. А про кусок кода ничего сказать не могу. Сам нашел на форуме такую конструкцию и просто ее использовал :)

    Ответить

  19. Ник 11.04.2009

    премного благодарен за код

    Ответить

  20. Харьковский Веб-мастер 27.04.2009

    Спасибо, заработало и не пришлось links.bd удалять…

    Ответить

  21. Александр 19.05.2009

    огромное спасибо! думал, придется менять шаблон, а тут вон как все просто оказалось

    Ответить

  22. Игорь Квентор 19.05.2009

    Всегда к вашим услугам, господа! :)

    Ответить

  23. SmaR 30.05.2009

    Спасибо автор :) Я как раз с такой фигнеё столкнулся, крякозябры выводились, и сапосикй код не помог, а твой пашет, сенкс :)

    Ответить

  24. макс 18.06.2009

    Респект автору! Использовал другой код и при добовлении нового блога в сапу были временные проблемы, а этот код сразу стал нормально работать.
    Короче удачного развития вашего блога ув. автор.

    Ответить

  25. Aleks 28.06.2009

    Спасибо друг. Ты настоящий хакер.

    Ответить

  26. Dev 31.07.2009

    Спасибо, проблему с кодировкой решил первым способом:
    $o[’charset’] = ‘UTF-8′;
    $sape = new SAPE_client($o);
    unset($o);

    Ответить

  27. Серг 06.08.2009

    При установке WP в концигурационном фале можно выбрать кодировку базы данных. Там стоит UTF-8 Если поменять на win1251 не позвлит ли это избежать проблем с кодировками в будущем?

    Ответить

  28. Игорь Квентор 06.08.2009

    Серг, выбрать кодировку можно, но официально ВП поддерживает только UTF-8. Поэтому, скорее всего будут проблемы с отображением кириллицы.

    Ответить

  29. Серг 06.08.2009

    Да, оставил по умолчанию, не стал рисковать. Просто мне надо будет встроить RSS с вордпресса на статичный сайт в win-1251 и php скрипт, который это делает, выводит ерунду :(

    Ответить

  30. Игорь Квентор 07.08.2009

    Тут может быть два варианта: либо статичный сайт переписать под кодировку UTF-8, либо попробовать пристроить эту же конструкцию из данного поста:

    echo mb_convert_encoding($sape->return_links(), "UTF-8", "CP1251");

    только без Сапы и return_links

    Ответить

  31. Escander 02.09.2009

    Отличное решение проблемы. Очень помог второй вариант, а то выводились одни вопросики…

    Ответить

  32. барто 16.09.2009

    Dankon, estimata!!!

    Ответить

  33. Петр 23.09.2009

    Спасибо, помогло!

    Ответить

  34. PCGAMER2005 02.10.2009

    Спасибо большое, выручил. А то всё никак было не решить проблему с кодировко, множество ссылок из за этого в эррор ушли.

    Ответить

  35. Илья 09.10.2009

    Кстати работает и для других движков - я на своем сайте таким образом поправил.

    Ответить

  36. Kokc 02.12.2009

    СПАСИБО!!!! Единственное что помогло!! :))))

    Ответить

  37. Игорь 16.12.2009

    Подскажите пожалуйста почему дублируются сылки в подвале сделано как у Вас в первом варианте.
    return_links();

    ?>

    Как я только не крутил его.Если удаляю эту строку echo $sape->return_links(); тогда сылка одна но уже не в тегах и сапа не видит их и в error ставит.
    В чём может быть проблема?

    Ответить

  38. Игорь Квентор 17.12.2009

    Игорь, сложно сказать. Возможно из-за плагина какого-то глючит. Кэш или супер-кэш какой-нибудь устанавливали?

    Ответить

  39. Игорь 23.12.2009

    Нет нечего не устанавливал

    Ответить

  40. Игорь Квентор 23.12.2009

    Тогда увы, подсказать ничего не смогу. Попробуйте поискать на форуме самой Сапы.

    Ответить

  41. Игорь 23.12.2009

    Всё решил вопрос. Спасибо Игорь за помощь)

    Ответить

  42. Игорь Квентор 23.12.2009

    Да не за что! А что было? Поделитесь. Вдруг еще кому-нибудь понадобится.

    Ответить

  43. svshka 02.01.2010

    А, если применять второй вариант, то надо менять кодировку в базе данных и мета-тегах? Если да, то как это сделать. Простите за такой нубовский вопрос, но я только начинаю освоение данного материала.

    Ответить

  44. Yabuti 10.01.2010

    Огромное Вам спасибо!
    Только Ваш код исправил проблему с неправильным отображением ссылок. Я уже и не знал, что делать.
    А теперь работает ))

    Ответить

  45. Игорь Квентор 10.01.2010

    Пожалуйста! :)

    Ответить

  46. alla 12.02.2010

    Спасибо за отличное решение! совет на сапе, действительно не спас! а ваш - помог :)

    Ответить

  47. BigPaPa 01.03.2010

    Сразу не въехал, но с 3-го раза получилось. СПАСИБО!!! У меня на 3-х блогах такая байда сегодня с обеда. Иду ложиться спать спокойно… благодаря автору блога :)

    Ответить

  48. Николай 09.03.2010

    Спасибо за разъяснения про сапу

    Ответить

  49. Un1t 19.03.2010

    О наконецтоки разобрался с этой кодировкой. Спс тебе огромное.

    Ответить

  50. ya 21.07.2010

    спасибо помогло и для линкфид

    Ответить

  51. Игорь Квентор 21.07.2010

    Вэлкам! :)

    Ответить

  52. АНДРЕЙ 14.09.2010

    Спасибо тебе, добрый человек! Помогло на все 100%

    Ответить

  53. Игорь Квентор 19.09.2010

    Спасибо на добром слове! :)

    Ответить

  54. ByGreez 06.10.2010

    Спасибо, помогло!

    Ответить

  55. Дмитрий 25.11.2010

    спасибо дружище за пост, сильно помог. Час ковырялся с кодировкой и разными кодами, оказалось все так просто)

    Ответить

    Игорь Квентор

    @Дмитрий, не за что! :)

    Ответить

  56. ram32 10.02.2011

    Спасибо, Ваш вариант с перекодировкой заработал! Первый не работал.

    Ответить

    Игорь Квентор

    @ram32, вэлкам!

    Ответить

  57. Tekil 09.08.2011

    Спасибо! Именно последний вариант мне помог! Уряяя!!!

    Ответить

  58. Иван 07.09.2011

    Спасибо большое! Отображалось всё в кубинах, заменил код, теперь русский отображается хорошо. Ешё раз спасибо!

    Ответить

  59. Alex 29.11.2011

    Спасибо большое!!! Реально помог, другие решения не работали!!! Все было в кубиках, а стало как надо. Респект тебе огромный!!!

    Ответить

  60. Андрей 30.11.2011

    Все отлично работает!
    Спасибо!

    Ответить

  61. Коля 13.12.2011

    Большое спасибо, второй код помог.

    Ответить

Трэкбеки

Оставить комментарий