Details

    • Type: Bug
    • Status: Closed
    • Priority: 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

      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.

        Gliffy Diagrams

          Attachments

            Activity

            Hide
            stronk7 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
            stronk7 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
            nicolasconnault Nicolas Connault added a comment -

            All done!

            Show
            nicolasconnault Nicolas Connault added a comment - All done!

              People

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

                Dates

                • Created:
                  Updated:
                  Resolved:
                  Fix Release Date:
                  11/Jun/07