Fixed iOS 5 emoji causes 500 error

Mike Tougeron

Well-known member
Posting a message with the iOS 5 emoji symbol causes a 500 error.

I've attached a pdf of what the server log said. FYI, I've redacted a few pieces of information (like paths & exact host info).

MySQL Info:
Server version: 5.5.12-55-log Percona Server (GPL), Release rel20.3, Revision 118

mysql> show create table xf_post\G
*************************** 1. row ***************************
Table: xf_post
Create Table: CREATE TABLE `xf_post` (
`post_id` int(10) unsigned NOT NULL AUTO_INCREMENT,
`thread_id` int(10) unsigned NOT NULL,
`user_id` int(10) unsigned NOT NULL,
`username` varchar(50) NOT NULL,
`post_date` int(10) unsigned NOT NULL,
`message` mediumtext NOT NULL,
`ip_id` int(10) unsigned NOT NULL DEFAULT '0',
`message_state` enum('visible','moderated','deleted') NOT NULL DEFAULT 'visible',
`attach_count` smallint(5) unsigned NOT NULL DEFAULT '0',
`position` int(10) unsigned NOT NULL,
`likes` int(10) unsigned NOT NULL DEFAULT '0',
`like_users` blob NOT NULL,
`warning_id` int(10) unsigned NOT NULL DEFAULT '0',
`warning_message` varchar(255) NOT NULL DEFAULT '',
PRIMARY KEY (`post_id`),
KEY `thread_id_post_date` (`thread_id`,`post_date`),
KEY `thread_id_position` (`thread_id`,`position`),
KEY `user_id` (`user_id`)
1 row in set (0.00 sec)


Jake Bunce

XenForo moderator
Staff member
The apple symbol? I copied it from your PDF and posted it on my forum without any problems. Do you have this problem on other forums or just yours?

That error message may indicate a collation problem in your database. Use phpmyadmin to check your collations. See this post for reference:

In particular, check xf_post.message which is referenced in the error. All collations should be "utf8_general_ci". You can manually edit the definition of each table to change the collations. If your entire database is messed up then I uploaded a script you can use:


XenForo developer
Staff member
It might be the bits after "ooh emoji!" I'm not sure.

It looks like a 4 byte UTF-8 character, which is outside the BMP. MySQL's UTF-8 support only extends to the BMP itself. Our input filtering may just have to limit to the BMP to prevent errors like this.