Estaba escribiendo algunas clases PHP comentadas y me encontré con un problema. Mi nombre (para la etiqueta @author) termina con un ș
(que es un carácter UTF-8, ... y un nombre extraño, lo sé).UTF-8 firma BOM en archivos PHP
Aunque guardo el archivo como UTF-8, algunos amigos informaron que ven ese personaje totalmente en mal estado (È™
). Este problema desaparece al agregar la firma BOM. Pero eso me preocupa un poco, ya que no sé mucho al respecto, excepto por lo que vi en la Wikipedia y en algunas otras preguntas similares aquí en SO.
Sé que agrega algunas cosas al principio del archivo, y por lo que entendí no es tan malo, pero me preocupa porque los únicos escenarios problemáticos que he leído involucran archivos PHP. Y dado que estoy escribiendo clases de PHP para compartirlos, ser 100% compatible es más importante que tener mi nombre en los comentarios.
Pero estoy tratando de entender las implicaciones, ¿debería usarlo sin preocuparme? o hay casos en los que podría causar daño? ¿Cuando?
Tenga en cuenta que hoy me estaba teniendo un problema donde un ' php morir ('test')' en la parte superior de un archivo PHP incluido mostraba la BOM UTF-8 (estos caracteres: 'ï» ¿') en la parte superior del archivo. Fue difícil de entender. Fue entonces cuando descubrí que uno de los desarrolladores guardaba el archivo en Unicode, no en ASCII, y este PHP no podía leer archivos PHP sin codificación. Inicié una copia nueva, copié los datos y los guardé en ASCII, y el problema se resolvió. Tenga en cuenta que algunos programas FTP pueden hacer esto, si alguna vez se encuentra con esto. – Volomike
Tenga en cuenta también que los valores de sesión no parecen funcionar correctamente en todas las páginas cuando una página tiene este problema de lista de materiales UTF-8. Tuve que usar un editor hexadecimal como ghex en Ubuntu más 'iconv -f utf8 -t ascii old.php> new.php' repetidamente para detectar todos los problemas Unicode, eliminarlos y guardar la página finalmente en ASCII sin errores el comando iconv. Una vez hecho esto, noté que los valores de sesión de las vars mantenían el estado entre las páginas. – Volomike
Parece que cuando se detecta la BOM UTF-8 en un archivo, nunca se envían encabezados que contengan la sesión y, por lo tanto, las variables de sesión entre páginas obtendrán nuevas sesiones en lugar de mantener la misma sesión. – Volomike