Tengo un registro guardado en una tabla de mysql con cotejamiento en "utf-8 unicode" que es "Título" escrito tal cual veis, entro en el phpmyadmin y veo que está guardado así, sin entities ni caracteres extraños.
Ahora he creado un documento superbásico solo con este código:
Código PHP:
<?php
// $link = conexión a bases de datos;
$res_texto = mysql_query ("SELECT titulo FROM blog WHERE (id_blog = 1)");
$titulo = mysql_result($res_texto, 0, "titulo");
echo "Encode: ".utf8_encode($titulo)."<br> \n";
echo "Decode: ".utf8_decode($titulo)."<br> \n";
echo "Nada: ".$titulo."<br> \n";
?>
Código:
Y si miro el código fuente aparece esto:Encode: Título Decode: T?lo Nada: Tlo
Código:
¿Por que pasa esto? ¿Cual es el problema? No debería salir perfectamente la palabra "Título" en el navegador sin aplicar ninguna transformación encode? Y sin embargo si miro el código fuente si aparece la palabra "Título" perfectamente escrita sin ninguna transformación, pero luego en el navegador se ve mal. Os agradecería muchisimo que alguien me explique por que pasa esto.Encode: TÃ*tulo<br> Decode: T?lo<br> Nada: Título<br>
P.D: si al documento este en cuestión le añado las cabeceras:
Código:
o<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html xmlns="http://www.w3.org/1999/xhtml"> <head> <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> <title>Untitled Document</title> </head>
Código:
No hay ninguna diferencia en los resultados, todo sale igual sin cabecera o con cualquiera de las dos anteriores.<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html xmlns="http://www.w3.org/1999/xhtml"> <head> <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" /> <title>Untitled Document</title> </head>
Si cambio el encoding del propio archivo de utf-8 a Europero occidental tampoco hay ninguna diferencia