Bug #21494 Bug Fixed

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

Version: 3.0.6 Reporter: Hop Studios

This is an archived bug report. If you are experiencing a similar issue, upgrade to the latest release and if that does not solve the problem, submit a new bug report

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
  • v4 addresses this out-of-the-box. This conversion utility for v3 will allow existing installations and upgrades to v4 to support emoji storage: https://github.com/EllisLab/Emoji-Support

    Derek Jones
    20th December, 2017 at 11:05am
  • 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

.(JavaScript must be enabled to view this email address)

ExpressionEngine News!

#eecms, #events, #releases