Details

    • Type: Bug Bug
    • Status: Closed
    • Priority: Major Major
    • Resolution: Fixed
    • Affects Version/s: 1.6.5, 1.7.2, 1.8
    • Fix Version/s: 1.6.6, 1.7.3, 1.8.1
    • Component/s: Filters
    • Labels:
      None
    • Environment:
      PHP5, tidy filter running
    • Database:
      Any
    • Affected Branches:
      MOODLE_16_STABLE, MOODLE_17_STABLE, MOODLE_18_STABLE
    • Fixed Branches:
      MOODLE_16_STABLE, MOODLE_17_STABLE, MOODLE_18_STABLE
    • Rank:
      29667

      Description

      After getting crazy last days with one Spanish moodler about how his site was showing accents and other chars (only in some places, apparently in a random fashion) I discovered that it had the tidy filter enabled and running.

      So, one simple string like this:

      'áéíóú'

      after being processed by format_text() is showed in browser like:

      áéíóúñÑ
      (enclosed by html <p> tags in source code)

      It seems that tidy breaks things sometimes...

      To reproduce:

      1) Enable tidy filter (ensure you've installed the PHP5 tidy extension (tidy_repair_string).
      2) Copy the attached test.php to your moodle dirrot.
      3) Invoke it from the browser.

      1. test.php
        2 kB
        Eloy Lafuente (stronk7)

        Activity

        Hide
        Eloy Lafuente (stronk7) added a comment -

        ...confirmed in Spanish forums:

        it seems that, by default the tidy_repair_string() function works with ascii (or iso-8859-1). But it has one third parameter that allows to specify the desired encoding.

        Just change the function call from:

        $text = tidy_repair_string($text, $tidyoptions);

        to

        $text = tidy_repair_string($text, $tidyoptions,'utf8');

        And everything should work perfectly.

        Note that, under 1.6 & 1.7 we need to ask for $CFG->unicodedb before setting than parameter, while under 1.8 and HEAD we can apply it directly.

        Ciao

        Show
        Eloy Lafuente (stronk7) added a comment - ...confirmed in Spanish forums: it seems that, by default the tidy_repair_string() function works with ascii (or iso-8859-1). But it has one third parameter that allows to specify the desired encoding. Just change the function call from: $text = tidy_repair_string($text, $tidyoptions); to $text = tidy_repair_string($text, $tidyoptions,'utf8'); And everything should work perfectly. Note that, under 1.6 & 1.7 we need to ask for $CFG->unicodedb before setting than parameter, while under 1.8 and HEAD we can apply it directly. Ciao
        Hide
        Nicolas Connault added a comment -

        All done!

        Show
        Nicolas Connault added a comment - All done!

          People

          • Votes:
            0 Vote for this issue
            Watchers:
            1 Start watching this issue

            Dates

            • Created:
              Updated:
              Resolved: