use UTF8, utf8 NO BOM y librerías
Publicado: 2013-08-01 12:31 @563
Hola,
Mi problema son los caracteres raros a la hora de imprimir un archivo html en el navegador. Detallo a continuación:
Tengo una función en un archivo .pl que imprime un documento html.
A la función se le llama así Lehtm("archivo.htm","variable1","variable2"...);
La función lo que hace es leer un archivo .html línea a línea y sustituye donde encuentra §S1§ por la variable variable1, §S2§ por la variable variable2, luego imprime por pantalla el html con las sustituciones.
La función finaliza de la siguiente forma: (como veis lleva el charset utf8).
print <<LIM; #>
content-type: text/html;charset=UTF-8 \n\n
$contenido
LIM
1;
}
Este archivo .pl donde está esta función está guardado como utf8, sin BOM.
Si pongo en la cabecera del .pl el use utf8 y el use encode me saltan errores por todos lados.
Hasta ahora siempre había trabajado con latin haciendo aplicaciones web. Tengo varias librerías hechas que tienen funciones especificas para consultar y modificar bases de datos. Los archivos .html los guardaba en formato DOS y los .pl los guardaba en formato UNIX. siempre en ASCII.
El problema es que ahora quiero trabajar en utf8. Me he estado leyendo tutoriales y tengo las cosas más o menos claras aunque algo no estoy cogiendo y por eso acudo a vosotros.
Trabajo con Perl 5.8.8 y MySQL.
- Las bases, tablas y campos los tengo en utf8_general_ci.
- tengo declarados en todos los archivos .html el charset utf8 y todos los html los tengo guardados en formato utf8, sin BOM.
- todos los archivos .pl están guardados en formato utf8, sin BOM.
Mi problema son los caracteres raros a la hora de imprimir un archivo html en el navegador. Detallo a continuación:
Tengo una función en un archivo .pl que imprime un documento html.
A la función se le llama así Lehtm("archivo.htm","variable1","variable2"...);
La función lo que hace es leer un archivo .html línea a línea y sustituye donde encuentra §S1§ por la variable variable1, §S2§ por la variable variable2, luego imprime por pantalla el html con las sustituciones.
La función finaliza de la siguiente forma: (como veis lleva el charset utf8).
print <<LIM; #>
content-type: text/html;charset=UTF-8 \n\n
$contenido
LIM
1;
}
Este archivo .pl donde está esta función está guardado como utf8, sin BOM.
Si pongo en la cabecera del .pl el use utf8 y el use encode me saltan errores por todos lados.
Hasta ahora siempre había trabajado con latin haciendo aplicaciones web. Tengo varias librerías hechas que tienen funciones especificas para consultar y modificar bases de datos. Los archivos .html los guardaba en formato DOS y los .pl los guardaba en formato UNIX. siempre en ASCII.
El problema es que ahora quiero trabajar en utf8. Me he estado leyendo tutoriales y tengo las cosas más o menos claras aunque algo no estoy cogiendo y por eso acudo a vosotros.
Trabajo con Perl 5.8.8 y MySQL.
- Las bases, tablas y campos los tengo en utf8_general_ci.
- tengo declarados en todos los archivos .html el charset utf8 y todos los html los tengo guardados en formato utf8, sin BOM.
- todos los archivos .pl están guardados en formato utf8, sin BOM.