Are you absolutely sure it's UTF-8 encoded?
For example, while the PHP script itself might be encoded in UTF-8, if the actual text of the notification is being pulled in from elsewhere (eg a database) then you need to make sure that the database field and the database connection are both set to UTF-8, or that you convert characters from whatever the encoding is to UTF8 before constructing the payload you send to Firebase.
There are various tools to do that in PHP, depending on the source of the data and things like whether or not it has HTML entities in it. For example when I was converting a site of mine to change data to UTF8 throughout, I used this to make sure things were converted from Western European (codepage 1252) to UTF8:
function convert_string($string) {
// convert encoding for the new database
return html_entity_decode( mb_convert_encoding($string,'UTF-8','CP1252') ,ENT_HTML5,'UTF-8') ;
}
The mb_convert_encoding function is similar to utf8_encode, but allows you to convert from more than just ISO-8859-1 (which is also western european, but lacking in things like the Euro symbol)