Bug #21494 Fix is in Upcoming Release

EE can’t handle the Poo emoticon (and many others)

Version: 3.0.6 Reporter: Hop Studios

When trying to add the Poo emoticon (or many others) to an entry (or anywhere else in EE) the data is truncated at that point and data loss occurs.

There’s the possibility of security risks as well, I suppose, though I think that’s very unlikely.

As proof, this bug report should end with the phrase, “I am poo.” written with an emoticon, but I believe that it will truncate.

“I am

  • Indeed, a known issue with emoji and MySQL utf8. In order to enforce this, our MySQL requirements will have to increase to 5.5.3+, and not all environments are ready, despite MySQL 5.5.3 being released over five years ago.

    Additionally, for anyone modifying their tables manually to accommodate emoji storage (which is certainly fine), be careful to adjust column limits to account for the possibility of the field’s content being made up entirely of 4-byte characters.

    Derek Jones
    12th January, 2016 at 7:21pm
  • Hi Derek:

    I have restored the database in the system using the encoding utf8mb4 and the collation utf8mb4_unicode_ci . I have also altered the table using the ALTER TABLE command to be defined as utf8mb4 Finally, I have set the column (exp_channel_data) to the same charset and collation, Results are the same.. Emojis can’t be embedded… Any suggestion where to adjust column limits?

    bandari
    23rd September, 2016 at 1:53pm
  • Did you also change your database config char_set and dbcollat? If not, it will use the defaults of utf8 and utf8_unicode_ci in the PHP client connection, which would not support 4-byte characters.

    Derek Jones
    23rd September, 2016 at 2:05pm
  • Thanks Derek.. You mean in this part in the config.php file on ExpressionEngine?

    /*
    |--------------------------------------------------------------------------
    | Default Character Set
    |--------------------------------------------------------------------------
    |
    | This determines which character set is used by default in various methods
    | that require a character set to be provided.
    |
    */
    $config['charset'] = 'UTF-8';
    bandari
    23rd September, 2016 at 2:08pm
  • No, in the $config['database'] array, e.g.:

    $config['database'] = array (
      'expressionengine' =>
      array (
        'hostname' => 'db_hostname',
        'username' => 'db_username',
        'password' => 'db_password',
        'database' => 'db_name',
        'char_set' => 'utf8mb4',
        'dbcollat' => 'utf8mb4_unicode_ci'
      ),
    );

    This handles the SET NAMES portion of the solution’s linked instructions for step 5.

    Derek Jones
    23rd September, 2016 at 2:13pm
  • Thanks Derek.. You are awesome.. Just one last question… I don’t have that value on my confi.php file.. Should I add it? I’m using EE 2.11

    bandari
    23rd September, 2016 at 2:18pm
  • Ah, no on the legacy version of the app, you can find those settings in database.php in the same directory as your config file.

    Derek Jones
    23rd September, 2016 at 2:19pm

You must be signed in to comment on a bug report.

  • When set to utf8 in Mysql, the database still can’t actually use the full range of characters commonly known as UTF-8. 

    Solution: The database should be modified to use utf8mb4.

    https://mathiasbynens.be/notes/mysql-utf8mb4

ExpressionEngine News

#eecms, #events, #releases