Остерегайтесь. utf8_encode требует строку ISO-8859-1. Если вы работаете с XML, убедитесь, что XML еще не закодирован в кодировке UTF-8. Комментарии к документации свидетельствуют о том, что функция разбита на множество интересных способов, поэтому вы не должны бросать ее, если не знаете, что она вам нужна.
Помните, что строки PHP - это просто немые, непознаваемые байты. У них нет привязки к ним, поэтому, если данные в строке уже являются UTF-8, вам не нужно запускать преобразование.
Кроме того, связанная статья Википедии гласит следующее:
В то время как стандарт Unicode допускает спецификацию в UTF-8, , он не требует или не рекомендует его. Порядок байтов не имеет смысла в UTF-8, поэтому спецификация предназначена только для идентификации текстового потока или файла как UTF-8 или того, что он был преобразован из другого формата, который имеет спецификацию.
Вам, вероятно, не нужно беспокоиться о том, чтобы использовать флакон BOM.