Foros del Web » Creando para Internet » HTML »

utf-8 se resiste!

Estas en el tema de utf-8 se resiste! en el foro de HTML en Foros del Web. hola, pues tengo el grandioso y tipico problema con acentos y ñ en mi pagina (servidor local) y lo raro es que aun cuando le ...
  #1 (permalink)  
Antiguo 12/11/2009, 13:18
Avatar de Mcruzmx  
Fecha de Ingreso: abril-2006
Mensajes: 357
Antigüedad: 18 años, 7 meses
Puntos: 9
utf-8 se resiste!

hola, pues tengo el grandioso y tipico problema con acentos y ñ en mi pagina (servidor local) y lo raro es que aun cuando le pongo dentro del head la etiqueta meta para que interprete en utf-8 siguen los problemas, que podre hacer?


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


archivo (ajax.php)
Código:
<?
	if(!session_start()){
		session_start();
	}
?>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<link rel="stylesheet" type="text/css" href="../css/styles.css"/>
<!-- lightbox-->
<link rel="stylesheet" href="../css/lightbox.css" type="text/css" media="screen" />
<script src="../js/prototype.js" type="text/javascript"></script>
<script src="../js/scriptaculous.js?load=effects" type="text/javascript"></script>
<script src="../js/lightbox.js" type="text/javascript"></script>
<!-- lightbox-->
<!-- AJAX-->
<script type="text/javascript" src="ajaxpags.js"></script> <!---ajax para paginas-->
<script src="js/jquery-latest.js"></script>
<?
	if ($_SESSION["mensaje"]!=""){
		?>
		<script type="text/javascript"> 
			document.getelementbyid("mensajes").display="";
		</script>
		<?
		$mensajelcass=$_SESSION["clasemensaje"];
	}
?>
<!-- AJAX-->
</head>
<body>
	<script language="javascript">
		function enviar(){
			var valid=0;
			/* validamos*/
			if (document.getElementById("tipo_doc").value=='null'){
				alert("Olvidó seleccionar el tipo de documento.");
			}else{
				valid=valid+1;
			}
			if (document.getElementById("noficio").value.length < 3){
				alert("Olvidó introducir el N° de Oficio o es menor de 3 caracteres.");
			}else{
				valid=valid+1;
			}
			if (document.getElementById("fecha_doc").value.length < 4){
				alert("Olvidó introducir la Fecha del Documento o es menor de 4 caracteres.");
			}else{
				valid=valid+1;
			}
			if (document.getElementById("remitentes").value.length < 4){
				alert("Olvidó introducir el Remitente o es menor de 4 caracteres.");
			}else{
				valid=valid+1;
			}
			if (document.getElementById("destinatarios").value.length < 4){
				alert("Olvidó introducir el Destinatario o es menor de 4 caracteres.");
			}else{
				valid=valid+1;
			}
			if (document.getElementById("copiaa").value.length < 3){
				alert("Olvidó introducir una Copia o es menor de 3 caracteres.");
			}else{
				valid=valid+1;
			}
			if (document.getElementById("asunto").value.length < 4){
				alert("Olvidó introducir el Asunto o es menor de 4 caracteres.");
			}else{
				valid=valid+1;
			}
			if (valid==7){ //every validation add 1 for success
				document.getElementById("captura").submit();					
			}else{
				alert("Por favor introduzca toda la información completa como se solicita.");
			}
		}
	</script>
	<div id="hoja">
		<div id="encabezado">
		  <div id="infouser">
		   <? include 'menu.php';?>
		  </div>
	  </div>
		<div id="contenido">
		  <p>
		  <h3>Seleccione las opciones correspondientes</h3>
		  <p>&nbsp; </p>
		  <p>
		  <div class="<? echo $mensajelcass; ?>" id="mensajes">
		  <?
		  	echo $_SESSION["mensaje"];
			$_SESSION["mensaje"]="";
		  ?>
		  </div>
		  <script type="text/javascript"> 
			document.getelementbyid("mensajes").display="none";
		</script>
		  </p>
			<?php
				$include=$_GET['include'];
				include($include);
			?>
		</div>
		<div id="footer"><img id="pie" src="../images/pie.png" alt="pie" border="0"></div>
	</div>
	</body>

</html>
el codigo anterior incluye en php un archivo llamado menu.php que es el siguiente:

Código:
<?php
	session_start();
	if ($_SESSION["scd_autorized"]!="true"){
		echo '<script language="javascript">';
		echo 'alert("Su sesión ha terminado, es posible que esto se presente cuando el sistema reconoce que no ha habido actividad en un lapso de 20 minutos ó que se intenta iniciar sesión con otra cuenta diferente a la activa en el mismo equipo. Puede iniciar sesión de nuevo para continuar");';
		echo 'document.location="../cerrar.php";';
		echo '</script>';
	}
?>
<SCRIPT TYPE="text/javascript">
	function submitenter(myfield,e){
		var keycode;
		if (window.event) keycode = window.event.keyCode;
		else if (e) keycode = e.which;
		else return true;
		
		if (keycode == 13){
			palabra_buscar.buscarform.submit();
			return false;
		}
		else
		return true;
	}
</SCRIPT>


<div id="cajabuscar">
<form action="ajax.php" method="get" id="buscarform" name="buscarform">
    <input name="palabra_buscar" type="text" id="palabra_buscar" title="Introduzca un folio para buscar y despues precione la tecla ENTER" size="30" />
	<input type="hidden" name="include" value="consulta.php" />
</form>
</div>
<div id="opusers">
<span class="nick"><?echo $_SESSION["scd_user_name"]?></span><p><a href="index.php"> Inicio</a> | <a href="ajax.php?include=acuses.php">Acuses</a> | <a href="ajax.php?include=consulta.php">Consultar</a> | <a href="" onclick="javascript:window.print();"> Imprimir</a> | <a href="../cerrar.php">Salir</a></p>
</div>

bueno, en teoria (mi) deberia funcionar. pero bueno, gracias.
  #2 (permalink)  
Antiguo 12/11/2009, 13:30
Avatar de David
Moderador
 
Fecha de Ingreso: abril-2005
Ubicación: In this planet
Mensajes: 15.720
Antigüedad: 19 años, 7 meses
Puntos: 839
Respuesta: utf-8 se resiste!

¿Guardas los archivos con codifcación UTF-8? Porque si no los guardas con esa codificación, seguirá mostrando caracteres extraños.
__________________
Por favor, antes de preguntar, revisa la Guía para realizar preguntas.
  #3 (permalink)  
Antiguo 12/11/2009, 13:31
Avatar de zerokilled
Javascripter
 
Fecha de Ingreso: abril-2009
Ubicación: Isla del Encanto, La Borinqueña [+>==]
Mensajes: 8.050
Antigüedad: 15 años, 7 meses
Puntos: 1485
Respuesta: utf-8 se resiste!

ademas de indicarlo en el elemento META, tambien tienes que encodificar el contenido. es decir, no es solo cuestion de decir cual charset utilizar, sino que tambien el documento o contenido debe ser guardado en esa encodificacion. admito que no tengo la suficiente idea de php pero si bien comprendi mi libro, php trabaja en iso-8859-1.

@David,
otra vez chocamos, David!
saludos
__________________
la maldad es una virtud humana,
y la espiritualidad es la lucha del hombre contra su maldad.
  #4 (permalink)  
Antiguo 12/11/2009, 13:38
Avatar de Mcruzmx  
Fecha de Ingreso: abril-2006
Mensajes: 357
Antigüedad: 18 años, 7 meses
Puntos: 9
Respuesta: utf-8 se resiste!

hola, trabajo con dreamweaver, los documentos según a lo que se cuando se guardan con una codificación se refleja en el codigo, osea se guarda una linea de codigo en el meta, como pueden ver, ahi estan las lineas que uso, deberia funcionar.

sobre lo de php, el php se ejecuta del lado del servidor y aun que sean 2 archivos al usuario se le presenta como 1 solo archivo (osea se unen) y el codigo del archivo menu, vendria quedando en el archivo que ve el usuario en las lineas donde se "incluye" en php ese archivo, por lo mismo deberia aplicar tambien la codificacion del meta.


a que se refiere cuando dice "tambien tienes que encodificar el contenido", gracias por las respuestas.
  #5 (permalink)  
Antiguo 12/11/2009, 14:07
Avatar de blogger  
Fecha de Ingreso: diciembre-2005
Ubicación: frente al monitor
Mensajes: 398
Antigüedad: 18 años, 11 meses
Puntos: 12
Respuesta: utf-8 se resiste!

Pudiera ser por el BOM, necesitas guardarlos en UTF-8 sin BOM, te recomiendo te consigas el Notepad++, abras los archivos y los guardes como UTF-8 sin BOM.
__________________
http://exegesis-biblica.com/
  #6 (permalink)  
Antiguo 12/11/2009, 14:32
Avatar de zerokilled
Javascripter
 
Fecha de Ingreso: abril-2009
Ubicación: Isla del Encanto, La Borinqueña [+>==]
Mensajes: 8.050
Antigüedad: 15 años, 7 meses
Puntos: 1485
Respuesta: utf-8 se resiste!

veamoslo en una forma más técnica. cuando se indica una encodificación en META, el navegador usa un decodificador segun el charset. cada decodificación tiene un algoritmo diferente para mostrar el contenido pero a la misma vez ese contenido debe estar encodificado correctamente. si vemos ese contenido en un editor hexadecimal, verás que cada método de encodificación se diferencian entre si. por ejemplo,
Código:
caracter latín   hex utf-8       hex iso-8859-1
ñ                C3 B1           F1
Ñ                C3 91           D1
á                C3 A1           E1
é                C3 A9           E9
í                C3 AD           3D
ó                C3 B3           F3
ú                C3 BA           FA
Á                C3 81           C1
É                C3 89           C9
Í                C3 8D           CD
Ó                C3 93           D3
Ú                C3 9A           DA
en la tabla, fíjate que el valor binario de cada caracter cambia según la encodificación. la ñ en utf-8 se representa como C3 B1 pero en iso-8859-1 tiene valor F1. en tu caso, le estas indicando al navegador que el contenido esta encodificado en utf-8 pero puede ser que el contenido internamente este encodificado como representa la columna hex iso-8859-1. de ahí es que salen los caracteres raros que tanto hablamos.

para corregirlo, tienes que verificar si tu editor web puede guardar el contenido en la encodificación correcta, y no me refiero a que el dreamweaver (en este caso) incluya el META correcto. sino que por alguna parte de dreamweaver, supongo cuando guardas el documento, debe tener las opciones de la encodificación a usar. si dreamweaver no lo tiene, que me extrañaria que no lo tenga, entonces necesitas otro editor que te pueda almacenar en uft-8. en cuanto a la parte php sucede más o menos igual, el contenido debe ser servido en la misma encodificación.
__________________
la maldad es una virtud humana,
y la espiritualidad es la lucha del hombre contra su maldad.
  #7 (permalink)  
Antiguo 12/11/2009, 14:43
Avatar de blogger  
Fecha de Ingreso: diciembre-2005
Ubicación: frente al monitor
Mensajes: 398
Antigüedad: 18 años, 11 meses
Puntos: 12
Respuesta: utf-8 se resiste!

Cita:
Iniciado por zerokilled Ver Mensaje
cuando guardas el documento, debe tener las opciones de la encodificación a usar. si dreamweaver no lo tiene, que me extrañaria que no lo tenga, entonces necesitas otro editor que te pueda almacenar en uft-8. en cuanto a la parte php sucede más o menos igual, el contenido debe ser servido en la misma encodificación.
Notepad++ == UTF-8 sin BOM
__________________
http://exegesis-biblica.com/
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 17:36.