Кодирование строки как UTF-8 с спецификацией в PHP

как я могу заставить PHP добавить спецификацию при использовании utf8_encode?

Вот что я пытаюсь сделать:

$zip->addFromString($filename, utf8_encode($xml)); 

К сожалению (для меня), результат не будет иметь знак спецификации в начале.

Вы пытались добавить его самостоятельно?

Спецификация UTF-8 представляется 0xEF 0xBB 0xBF , поэтому вы можете прикрепить ее к своей строке после преобразования в UTF-8.

 $utf8_with_bom = chr(239) . chr(187) . chr(191) . $utf8_string; 

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

Помните, что строки PHP – это просто немые, непознаваемые байты. У них нет прикрепленного к ним набора символов, поэтому, если данные в строке уже являются UTF-8, вам не нужно запускать преобразование.

Кроме того, связанная статья Википедии гласит:

Хотя стандарт Unicode допускает спецификацию в UTF-8, он не требует или не рекомендует его. Порядок байтов не имеет смысла в UTF-8, поэтому спецификация предназначена только для идентификации текстового потока или файла как UTF-8 или того, что он был преобразован из другого формата, который имеет спецификацию.

Наверное, вам не нужно беспокоиться о том, чтобы использовать бирку материалов.