We launched new forums in March 2019—join us there. In a hurry for help with your website? Get Help Now!
    • 30657
    • 8 Posts
    Добрый день!
    Прошу сильно не пинать, т.к. проблемы кодировки уже тысячу раз обсуждались, но решения я так и не нашел.
    Установлена MODX v.1.0.2. Кодировка БД - UTF-8.

    Создал визуальный TV для ввода ключевых слов страницы как показано на странице http://www.mgordeev.ru/2010/01/meta102/. Выбрал тип String Formatter и String Format - Lower Case. Привязал к шаблону, в нужном ресурсе занес ключевые слов и сохранил. Вот пример, слово1, слово2, слово3.

    При повторном просмотре ресурса (в панели управления) все слова на месте и корректно отображаются.

    При выводе на страницу через [*tvkeywords*] получаю знаки вопроса.
    При смене String Format на Upper Case на странице получаю следующее - слнвн1, слнвн2, слнвн3.
    При выборе String Format как Sentence Case - слово1, слово2, слово3, и тоже самое при Capitalize.

    Т.е. налицо проблемы преобразования. Если кто-то сталкивался - подскажите как решить проблему.

    Хотя вариант с Sentence Case или Capitalize меня вполне устраивает, но все же хотелось бы понять причину такого поведения и постараться устранить ее. Да, чуть не забыл, и title и description выводимые через [*longtitle*] и [*description*] соответственно отображаются нормально. В базе ключевые слова тоже отображаются нормально. Проблема кроется в преобразованиях после извлечения из базы до вывода на страницу.

    Пытался копаться в исходниках, но нужного места не нашел.

    Заранее, большое спасибо за помощь.
      • 785
      • 2,113 Posts
      Скорее всего, в tmplvars.format.inc.php надо все strtolower заменить на mb_strtolower (как и другие аналогичные функции), при этом должно быть правильно установлено mb_internal_encoding.
        Создание сайтов на MODx, поддержка сайтов, поисковая оптимизация, программирование, копирайтинг
        Статьи о MODx, регулярно новые публикации
        • 30657
        • 8 Posts
        Спасибо большое!
        Вы правы, проблема крылась в неправильной работе функций strtolower, strtoupper и т.п. с кодировкой UTF-8. Подробнее проблема расписана на странице http://anton-pribora.ru/articles/php/locales/.

        Правда аналогов ucfirst() и ucwords() в библиотеке функций mb не нашел. Но может плохо искал, т.к. особой надобности в них у меня пока нет.

        Я еще плохо разобрался с внутренней структурой MODX, поэтому не подскажите, куда вписать строку

        mb_internal_encoding($modx->config[’modx_charset’]);

        чтобы она была вызвана до начала любых вызовов функций библиотеки mb?
          • 785
          • 2,113 Posts
          Quote from: Trogvar at Jan 21, 2010, 06:51 AM

          поэтому не подскажите, куда вписать строку

          mb_internal_encoding($modx->config[’modx_charset’]);

          чтобы она была вызвана до начала любых вызовов функций библиотеки mb?
          Проще всего в index.php
            Создание сайтов на MODx, поддержка сайтов, поисковая оптимизация, программирование, копирайтинг
            Статьи о MODx, регулярно новые публикации
            • 897
            • 1,620 Posts
            Quote from: Trogvar at Jan 21, 2010, 06:51 AM

            Правда аналогов ucfirst() и ucwords() в библиотеке функций mb не нашел. Но может плохо искал, т.к. особой надобности в них у меня пока нет.
            http://www.php.net/manual/en/function.mb-convert-case.php
              "Und wenn du lange in einen Abgrund blickst, blickt der Abgrund auch in dich hinein."

              Не используйте Revo для "просто сайтов". Используйте Evo

              Who can defeat the Russian bear?
              • 30657
              • 8 Posts
              Большое спасибо за помощь!