AJAX - Ayuda con codficación de caracteres

 
Vista:

Ayuda con codficación de caracteres

Publicado por rraces (2 intervenciones) el 23/01/2007 00:04:22
Hola amigos, tengo un problema con los acentos y las ñ. Explico un poco por encima , tengo una página principal la cual tiene un formulario que tiene varios combos, pero nos centramos en dos, uno que muestra las localidades y otro las zonas. Bien las el combo de zonas esta desactivado y cuando se elige una localidad se carga la zonas, desde bbdd, correspondientes a dicha localidad.
La función que crea el select de las localidades es el siguiente código en php:
<?
//Genera la localidad en el formulario
function generaLocalidad()
{
$extraTag = "onChange=cargaContenido(2)";

$consulta = "select localidad from localidad";

$result = mysql_query($consulta);
$row[] = "todas";
while($row1 = mysql_fetch_array($result, MYSQL_NUM))
{
$row[] = htmlentities($row1[0]);
}

$arr_txt = $row;
$arr_vals = $arr_txt;

$lista_select = frm_select('localidad', $arr_txt, $arr_vals,"",$extraTag,"select_1");
echo $lista_select;
}
?>

La función cargaContenido(2) esta hecha en AJAX y es la siguiente:
function cargaContenido(selectACargar)
{
// Recibo el número correspondiente al combo que se debe llenar de datos
var selectAnterior = selectACargar-1; // Obtengo el número del combo que activó el evento onChange
// Extraigo el valor del combo que se ha cambiado

var strParam = getParametros( selectACargar );
var elemento;

if( strParam != "" && selectACargar != 4 )
{

ajax=nuevoAjax();
// Envio al servidor el valor seleccionado y el combo al cual se le deben poner los datos
ajax.open("GET", "php/select_dependientes_proceso.php?" + strParam, true);
ajax.onreadystatechange=function()
{
if (ajax.readyState==1)
{
// Mientras carga elimino la opcion "Elige" y pongo una que dice "Cargando"

elemento=document.getElementById("select_" + selectACargar);
elemento.length=0;
var opcionCargando=document.createElement("option");
opcionCargando.value=0;
opcionCargando.innerHTML="Cargando...";
elemento.appendChild(opcionCargando);
elemento.disabled=true;
}
if (ajax.readyState==4)
{
// Coloco en la fila contenedora los datos que recivo del servidor

document.getElementById("fila_" + selectACargar).innerHTML=ajax.responseText;
}
}
ajax.send(null);
}
}

Bien pues con las localidades que contienen acentos ñ no funciona correctamente. La página en php que carga es la siguiente, que es la que muestra en el combo de zonas las zonas encontradas.

<?

require_once("conexion/conexion.php");
require ("form_items.php");

$oRequestData = ( !$HTTP_POST_VARS ) ? $HTTP_GET_VARS : $HTTP_POST_VARS ;
$oData = $oRequestData;

$valor=$oData["seleccionado"];

$selectACargar=$oData["select"];

$selectSelectedF=$oData["valor"];

echo $oData["select_1"];

$oConectar=Conectarse();

//$localidadBuscar = htmlentities($oData["select_1"]);
if($selectACargar==2)
{
$valorUniversidad=$valor;
$consulta = "SELECT * FROM zona WHERE localidad ='". $oData["select_1"] ."' ";
$oQuery=mysql_query($consulta);
}
// y aca los imprime
if($selectACargar==2)
{
$extraTag = "";

$row[] = "todas";
while($row1 = mysql_fetch_array($oQuery, MYSQL_NUM))
{
$row[] = htmlentities($row1[0]);
}

$arr_txt = $row;
$arr_vals = $arr_txt;


$lista_select = frm_select('zona', $arr_txt, $arr_vals,"todas",$extraTag,"select_2");
echo $lista_select;
}
?>

He probado con la configuración UTF-8 y la iso-8859-1 y no me funciona correctamente. He probado a utilizar la función utf_encode y utf_decode para enviar y recibir datos entre AJAX y PHP pero nada. Espero que me puedan ayudar de alguna manera pq me estoy volviendo loco probando cosas.
Gracias Y un saludo
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder

RE:Ayuda con codficación de caracteres

Publicado por Aritz (32 intervenciones) el 24/01/2007 07:35:35
HTML usa su propia codificación de las tildes, de la ñ y otros símbolos similares.

á = á
é = é
í = í
ó = ó
ú = ú
ñ = ñ

Las mayúsculas siguen la misma estructura, donde indicas la letra (justo detrás del &), poniendo la letra en mayúscula. También siguen una estructura similar los símbolos <, >, &.

Por ejemplo:

España = España
Mayúscula = Mayúscula

Para ver todos los caracteres especiales visita esta página

http://www.htmlcodetutorial.com/characterentities_famsupp_69.html
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:Ayuda con codficación de caracteres

Publicado por dan (2 intervenciones) el 27/01/2007 05:00:59
Cuando vayas a realizar un INSERT a la base de datos usa una funcion PHP que se llama HTMLENTITIES, que te hace la conversion adecuada para los caracteres (tildes, acentos, etc). Te dejo aqui un pequeño ejemplo de la funcion:

$var_para_bd=htmlentities($_GET['nombre']);
$qr_insert="insert into tabla values".$var_para_bd;
mysql_query($qr_insert);
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar