как я могу заставить PHP добавить спецификацию при использовании utf8_encode?
Вот что я пытаюсь сделать:
$zip->addFromString($filename, utf8_encode($xml));
К сожалению (для меня), результат не будет иметь отметки BOM в начале.
как я могу заставить PHP добавить спецификацию при использовании utf8_encode?
Вот что я пытаюсь сделать:
$zip->addFromString($filename, utf8_encode($xml));
К сожалению (для меня), результат не будет иметь отметки BOM в начале.
Вы сами пробовали добавить?
спецификация UTF-8 кажется 0xEF 0xBB 0xBF
, поэтому вы можете прикрепить ее к своей строке < em>после преобразования в 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 или того, что он был преобразован из другого формата, имеющего спецификацию.
Вам, вероятно, не нужно беспокоиться о чечетке BOM для начала.
chr(0xEF).chr(0xBB).chr(0xBF)
- таким образом вы сможете увидеть, что оно шестнадцатеричное, и оттуда лучше понять, что это спецификация.
- person Niet the Dark Absol; 18.07.2014