php - quitar - utf 8 sin bom html
Codificación de una cadena como UTF-8 con BOM en PHP (1)
¿Has intentado añadir uno tú mismo?
El UTF-8 BOM parece ser 0xEF 0xBB 0xBF
, por lo que puede adjuntarlo a su cadena después de la conversión a UTF-8.
$utf8_with_bom = chr(239) . chr(187) . chr(191) . $utf8_string;
Cuidado, sin embargo. utf8_encode
quiere una cadena ISO-8859-1. Si está trabajando con XML, asegúrese de que el XML no esté ya codificado en UTF-8. Los comentarios en la documentación sugieren que la función se divide en una variedad de formas divertidas, por lo que no debe utilizarla a menos que sepa que la necesita.
Recuerda, las cadenas de PHP son simplemente bytes tontos y desconocidos. No tienen un conjunto de caracteres adjunto, por lo que si los datos de la cadena ya son UTF-8, no es necesario que ejecute la conversión.
Además, el artículo de Wikipedia vinculado dice esto:
Si bien el estándar Unicode permite BOM en UTF-8, no lo requiere ni lo recomienda. El orden de bytes no tiene significado en UTF-8, por lo que una lista de materiales solo sirve para identificar una secuencia de texto o un archivo como UTF-8 o que se convirtió de otro formato que tiene una lista de materiales.
Probablemente no necesite molestarse con el tapdance BOM para empezar.
¿Cómo puedo obligar a PHP a agregar la lista de materiales cuando se utiliza utf8_encode?
Esto es lo que estoy tratando de hacer:
$zip->addFromString($filename, utf8_encode($xml));
Desafortunadamente (para mí), el resultado no tendrá la marca de la lista de materiales al principio.