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

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

          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