Foros del Web » Programando para Internet » PHP »

header utf-8

Estas en el tema de header utf-8 en el foro de PHP en Foros del Web. Hola, mi pregunta es sencilla y concreta, para indicar el juego de caracteres utf-8 se pone así: <meta http-equiv="Content-type" content="text/html; charset=utf-8" /> o... header ('Content-type: ...
  #1 (permalink)  
Antiguo 17/02/2010, 04:10
Avatar de humanista  
Fecha de Ingreso: abril-2005
Mensajes: 878
Antigüedad: 19 años
Puntos: 15
header utf-8

Hola, mi pregunta es sencilla y concreta, para indicar el juego de caracteres utf-8 se pone así:

<meta http-equiv="Content-type" content="text/html; charset=utf-8" />
o...

header ('Content-type: text/html; charset=utf-8');

qué diferencias hay y cuándo conviene usar una u otra?
  #2 (permalink)  
Antiguo 17/02/2010, 05:57
Avatar de maycolalvarez
Colaborador
 
Fecha de Ingreso: julio-2008
Ubicación: Caracas
Mensajes: 12.120
Antigüedad: 15 años, 9 meses
Puntos: 1532
Respuesta: header utf-8

el primero es para que el navegador cliente pueda realizar los ajustes correspondientes al html según la codificación que posea (que puede ser independiente de la de la transmisión)

el segundo le indica al navegador (o servicio que solicite) con que codificación llega el archivo según el protocolo HTTP, puedes notar que es diferente, generalmente las paginas html se envían con codificación básica ANSI (para hacer ligera la transmisión), y se pueden pasar caracteres unicode sin problemas, es por ello que si no colocas el meta, en el navegador salen símbolos raros (porque esos caracteres ocupan 2 bytes en lugar de 1 como en ANSI), pero sólo debes usar el header cuando sea necesario, por ejemplo al enviar un xml para AJAX, ya que muchas veces el xmlhttprequest generalmente acepta una codificación concreta
  #3 (permalink)  
Antiguo 17/02/2010, 07:45
Avatar de humanista  
Fecha de Ingreso: abril-2005
Mensajes: 878
Antigüedad: 19 años
Puntos: 15
Respuesta: header utf-8

no estoy seguro de haber entendido todo perfectamente, pero según creo entender siempre se debe usar el meta a menos q se use AJAX, no? en cuyo caso deberíamos usar el header, ese podría ser el resumen?

si es así mi pregunta es la siguiente.

tengo código en index.php q llama a un formulario AJAX

en el index.php tengo:

header ('Content-type: text/html; charset=utf-8');

desde ahí llamo al ajax y el ajax llama a update.php q lo q hace es actualizar la BD. este update.php tiene tb el mismo header.

ambos, el index.php y update.php tienen el mismo header y tb ambos hacen conexión a la BD ya q el index.php hace una consulta a la BD y el update.php hace la actualización.

el caso es q me da el siguiente error:

Fatal error: Cannot redeclare conec_miweb() (previously declared in /home/virtual/miweb.com/includes/conec-miweb.php:5) in /home/virtual/miweb.com/includes/conec-miweb.php on line 16

pq puede ser?

Última edición por humanista; 17/02/2010 a las 09:36
  #4 (permalink)  
Antiguo 17/02/2010, 07:57
Avatar de David
Moderador
 
Fecha de Ingreso: abril-2005
Ubicación: In this planet
Mensajes: 15.720
Antigüedad: 19 años
Puntos: 839
Respuesta: header utf-8

El error no tiene que ver con la cabacera HTTP, sino en que estás tratando de redeclarar una función existente (conec_mostfamousin)
__________________
Por favor, antes de preguntar, revisa la Guía para realizar preguntas.
  #5 (permalink)  
Antiguo 17/02/2010, 09:35
Avatar de humanista  
Fecha de Ingreso: abril-2005
Mensajes: 878
Antigüedad: 19 años
Puntos: 15
Respuesta: header utf-8

ok, entonces debería quitar la conexión a la base de datos en mi archivo update.php? o sería en el index.php?

y otra cosa, ya por dejarlo todo en orden, el header lo tengo en index.php y en update.php (como os puse index.php llama a AJAX y éste a update.php), está también duplicado? debo quitarlo en uno de los 2 sitios, en cuál?

gracias
  #6 (permalink)  
Antiguo 17/02/2010, 09:38
Avatar de David
Moderador
 
Fecha de Ingreso: abril-2005
Ubicación: In this planet
Mensajes: 15.720
Antigüedad: 19 años
Puntos: 839
Respuesta: header utf-8

Lo que se está duplicando es la declaración de la función (si estás incluyendo dos veces el mismo archivo que tiene la declaración, producirá ese error), podrías usar function_exists para determinar si existe o no antes de declarar:
Código PHP:
Ver original
  1. if (!function_exists("funcion")) {
  2.     function funcion() {
  3.         // Código
  4.     }
  5. }
__________________
Por favor, antes de preguntar, revisa la Guía para realizar preguntas.
  #7 (permalink)  
Antiguo 17/02/2010, 14:07
Avatar de humanista  
Fecha de Ingreso: abril-2005
Mensajes: 878
Antigüedad: 19 años
Puntos: 15
Respuesta: header utf-8

sigo igual.

en index.php y en update hago la conexión a la BD así:

$pathcompleto="../includes/";
include($pathcompleto . "conec-miweb.php");
$link=conec_miweb();


es decir entiendo q declaro 2 veces la misma función por lo que en update.php voy y quito la 2ª línea, esta include($pathcompleto . "conec-miweb.php");

entonces me sale el siguiente error:

Fatal error: Call to undefined function conec_miweb() in /home/virtual/miweb.com/profile/update.php on line 18

entonces quito tb la tercera línea, esta: $link=conec_miweb();

Warning: mysql_query(): supplied argument is not a valid MySQL-Link resource in /home/virtual/miweb.com/profile/update.php on line 110

en esa línea pone: mysql_query($sql,$link);

y en la línea 109 hago el UPDATE:

$sql="UPDATE tabla SET name='$name', web='$web' where id='$id'";

y no puedo quitar la línea 110 pq no me hace el update
  #8 (permalink)  
Antiguo 17/02/2010, 14:15
Avatar de santris  
Fecha de Ingreso: agosto-2009
Ubicación: Sant Feliu de Llobregat
Mensajes: 955
Antigüedad: 14 años, 8 meses
Puntos: 66
Respuesta: header utf-8

Si esta linea es una función

Código PHP:
$link=conec_miweb(); 
Beberás pasarle unos parametros, no?

Código PHP:
$link=conec_miweb($parametro1$parametro2$parametro3); 
Esta linea estaría bien siempre que en este archivo esté definida la función, no la llamada.

Código PHP:
include($pathcompleto "conec-miweb.php"); 

Última edición por santris; 17/02/2010 a las 14:21
  #9 (permalink)  
Antiguo 17/02/2010, 14:42
Avatar de humanista  
Fecha de Ingreso: abril-2005
Mensajes: 878
Antigüedad: 19 años
Puntos: 15
Respuesta: header utf-8

no entiendo a q te refieres...

$pathcompleto="../includes/";

en la carpeta includes está la función q se conecta a la base de datos.

luego la "incluyo":

include($pathcompleto . "conec-miweb.php");

y luego la asigno a una variable:

$link=conec_miweb();

no veo dónde puede estar el problema...
  #10 (permalink)  
Antiguo 17/02/2010, 15:18
Avatar de santris  
Fecha de Ingreso: agosto-2009
Ubicación: Sant Feliu de Llobregat
Mensajes: 955
Antigüedad: 14 años, 8 meses
Puntos: 66
Respuesta: header utf-8

No existe problema si la función tiene los parametros de conexión, esa era mi pregunta y por tu respuesta deduzco que los has definido dentro de la función.

Podrías mostrar el código de la función?

Saludos
  #11 (permalink)  
Antiguo 17/02/2010, 17:15
Avatar de humanista  
Fecha de Ingreso: abril-2005
Mensajes: 878
Antigüedad: 19 años
Puntos: 15
Respuesta: header utf-8

así es, los defino dentro de la función:


function conec_miweb()
{
if (!($link=mysql_connect("localhost","miweb","passwo rd")))
{
exit();
}

if (!mysql_select_db("miweb",$link))
{
exit();
}

return $link;
}
  #12 (permalink)  
Antiguo 17/02/2010, 17:30
Avatar de santris  
Fecha de Ingreso: agosto-2009
Ubicación: Sant Feliu de Llobregat
Mensajes: 955
Antigüedad: 14 años, 8 meses
Puntos: 66
Respuesta: header utf-8

Prueba con algo mas simple a ver que pasa.

Código PHP:
<?php
function conec_miweb()
{
$link=mysql_connect("localhost","miweb","passwo rd");
if(
mysql_select_db("miweb",$link))
return 
true;
else
exit();
}
?>
  #13 (permalink)  
Antiguo 17/02/2010, 19:03
Avatar de David
Moderador
 
Fecha de Ingreso: abril-2005
Ubicación: In this planet
Mensajes: 15.720
Antigüedad: 19 años
Puntos: 839
Respuesta: header utf-8

Una alternativa al problema es usar include_once, de ese modo, sin importar cuántas veces llames a la función include_once, sólo cargará el archivo una vez.
__________________
Por favor, antes de preguntar, revisa la Guía para realizar preguntas.
  #14 (permalink)  
Antiguo 18/02/2010, 18:02
Avatar de humanista  
Fecha de Ingreso: abril-2005
Mensajes: 878
Antigüedad: 19 años
Puntos: 15
Respuesta: header utf-8

al final era un problema de include.

al final del update.php hacía include de index.php por lo q se repetía la cabecera al parecer. quitando este último include se me solucionó el tema.

gracias por vuestra ayuda

Etiquetas: header, utf
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 18:22.