Кодирование строки как UTF-8 С BOM в PHP
Как заставить PHP добавить спецификацию при использовании utf8_encode ?
вот что я пытаюсь сделать:
$zip->addFromString($filename, utf8_encode($xml));
к сожалению (для меня), результат не будет иметь спецификации Марка в начале.
1 ответов
вы пробовали добавить один самостоятельно?
на UTF-8 BOM кажется 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 позволяет BOM в UTF-8,он не требует или не рекомендует его. Порядок байтов не имеет значения в UTF-8 таким образом, спецификация служит только для идентификации текстового потока или файла как UTF-8 или что он был преобразован из другого формата, который имеет спецификацию.
вам, вероятно, не нужно беспокоиться о BOM tapdance для начала.