1
AJAX / Graves Problemas UTF-8
« en: 05 de Octubre de 2011, 00:41:48 am »
Saludos!
Tuve Problemas hace poco, pues usaba el charset= iso-8895-1 en mis documentos HTML, ya que AJAX trabaja con UTF-8 (o eso creo entender) y los resultados que traía no venían con caracteres como"ñ", "ç", o acentos. Haciendo pruebas el día de hoy cree esta página:
Los resultados siguen sin traer caracteres especiales a pesar de estar usando utf-8 y con UTF-8 ni siquierea los trae al hacer un query sin uso de ajax, para eso he de usar UTF-8-ci o volver a iso-8895-1...
No sé que puedo estar haciendo mal, y estoy a poco de volarme la cabeza
alguien me puede dar algún consejo??
gracias
este es el sql de la base de datos
y este el archivo res.php
Tuve Problemas hace poco, pues usaba el charset= iso-8895-1 en mis documentos HTML, ya que AJAX trabaja con UTF-8 (o eso creo entender) y los resultados que traía no venían con caracteres como"ñ", "ç", o acentos. Haciendo pruebas el día de hoy cree esta página:
Código: [Seleccionar]
<!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>
<script type="text/javascript">
function crearAjax()
{
var xmlhttp = false;
if (window.XMLHttpRequest)
{// code for IE7+, Firefox, Chrome, Opera, Safari
xmlhttp=new XMLHttpRequest();
}
else
{// code for IE6, IE5
xmlhttp=new ActiveXObject("Microsoft.XMLHTTP");
}
return xmlhttp;
}
function buscaNombre(nombre)
{
if(nombre=="")
{
document.getElementById('mostrar').innerHTML="";
return;
}
Pedido=crearAjax();
Pedido.open('GET','qry/res.php?q='+nombre,true);
Pedido.onreadystatechange=function()
{
if(Pedido.readyState==4 && Pedido.status==200)
{
document.getElementById('mostrar').innerHTML=decodeURIComponent(Pedido.responseText);
}
}
//decodeURIComponent(Pedido
Pedido.send();
}
</script>
</head>
<body>
<form action="" method="post">
<label>Nombre</label>
<?php
include('qry/db.php');
$query="SELECT * FROM empleados";
$result=DBExecute($query,$link,1);
?>
<select id="nom" onchange="buscaNombre(this.value)">
<?php while($row=mysql_fetch_row($result)){echo"<option value='$row[1]'>$row[1]</option>";} ?>
</select>
<br />
</form>
<div id="mostrar">
<?php include('qry/res.php'); ?>
</div>
</body>
</html>Los resultados siguen sin traer caracteres especiales a pesar de estar usando utf-8 y con UTF-8 ni siquierea los trae al hacer un query sin uso de ajax, para eso he de usar UTF-8-ci o volver a iso-8895-1...
No sé que puedo estar haciendo mal, y estoy a poco de volarme la cabeza
alguien me puede dar algún consejo??
graciaseste es el sql de la base de datos
Código: [Seleccionar]
-- phpMyAdmin SQL Dump
-- version 3.3.9
-- http://www.phpmyadmin.net
--
-- Servidor: localhost
-- Tiempo de generación: 04-10-2011 a las 17:30:19
-- Versión del servidor: 5.5.8
-- Versión de PHP: 5.3.5
SET SQL_MODE="NO_AUTO_VALUE_ON_ZERO";
/*!40101 SET @OLD_CHARACTER_SET_CLIENT=@@CHARACTER_SET_CLIENT */;
/*!40101 SET @OLD_CHARACTER_SET_RESULTS=@@CHARACTER_SET_RESULTS */;
/*!40101 SET @OLD_COLLATION_CONNECTION=@@COLLATION_CONNECTION */;
/*!40101 SET NAMES utf8 */;
--
-- Base de datos: `prueb`
--
-- --------------------------------------------------------
--
-- Estructura de tabla para la tabla `empleados`
--
CREATE TABLE IF NOT EXISTS `empleados` (
`id` int(10) unsigned NOT NULL AUTO_INCREMENT,
`nombre` varchar(20) COLLATE utf8_unicode_ci NOT NULL,
`apellido` varchar(20) COLLATE utf8_unicode_ci NOT NULL,
PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci AUTO_INCREMENT=9 ;
--
-- Volcar la base de datos para la tabla `empleados`
--
INSERT INTO `empleados` (`id`, `nombre`, `apellido`) VALUES
(1, 'Arturo', 'Ramirez'),
(3, 'Alba', 'Ramirez'),
(5, 'Diana', 'No sé'),
(7, 'ççç', 'ño');
y este el archivo res.php
Código: [Seleccionar]
<?php
include('db.php');
$query="SELECT apellido FROM empleados WHERE nombre='$q'";
$result=DBExecute($query,$link,1);
echo"
<table>
<tr>
<th>Apellido</th>
<tr>";
while($row=mysql_fetch_row($result))
{
echo"<tr><td>";$thisShit=utf8_decode($row[0]);echo"$thisShit</td></tr>";
}
echo"</table>";
?>

