Hola, supongo que estas usando AMFPHP 0.9 porque es el que da mas problemas con esto de las tildes y caracteres especiales, la version de AMFPHP 1.0 ya viene con codifcacion utf8 por defecto asi que no habria que preocuparse por eso, pero bueno una forma en que yo solucione esto con AMFPHP 0.9 fue valiendome de funciones de flash para codificacion y decodificacion como lo son
escape y
unescape respectivamente, aparte de la funcion de php
uft8_encode, explicare un poco como hice esto con el codigo del tutorial:
*cuando voy a enviar un valor desde la pelicula flash al servicio(codigo de AMFPHP) lo mando con la funcion escape, en el caso del tutorial lo hacia para las opciones de insertar y modificar
case 1:
servicio.insertar(escape(nombretxt.text), escape(comentariostxt.text));
trace("confirmo insertar");
break;
case 2: //modificar id, nombre, comentarios
servicio.modificar(idtxt.text,escape(nombretxt.text),escape(comentariostxt.text));
trace ("confirmo modificar");
break;
* ahora para que php entienda esta codificacion uso la funcion utf8_encode en los metodos insertar y modificarla (insisto del ejemplo del tutorial), :
function insertar($nombre,$comentarios){
$nombre = utf8_encode($nombre);
$comentarios = utf8_encode($comentarios);
$sql= "INSERT INTO prueba (id,nombre,comentarios) VALUES ('','".$nombre."','".$comentarios."')";
return $this->query($sql,1); //retornamos el id de nuestro registro insertado
}
function modificar ($id,$nombre,$comentarios){
$nombre = utf8_encode($nombre);
$comentarios = utf8_encode($comentarios);
//creamos la cadena de nuestra sentencia(query) SQL
$sql = "UPDATE `prueba` SET `nombre` ='".$nombre."', `comentarios` ='".$comentarios."' WHERE `id` =".$id." LIMIT 1;";
return $this->query($sql,0);
}
Ahora eso dos es para insertar y/o modificar datos de la tabla de la base de datos, pero necesitamos mostrar los datos en flash, bueno en este caso en el codigo del servicio no se hara NADA, pero si en la recepcion de flash y bueno lo haremos con
unescape, y justamente en la recepcion del metodo consulta que es el que recibe los datos de los campos nombre y comentarios:
capturaRespuesta.consulta_Result = function (data){
var proveedor:Array = new Array();
btnInsertar.enabled=true;
if (data){
if (data.getLength()){
for (i=0; i<data.getLength();i++){
proveedor.addItem({id:data.getItemAt(i).id,nombre:unescape(data.getItemAt(i).nombre),comentarios:unescape(data.getItemAt(i).comentarios)});
}
// demas codigo
}
Ahora en las
consideraciones del tutorial explico las consecuencia de usar esto
saludos
PD: para la version 1.0 de AMFPHP no hay necesidad de hacer todo esto, porque trabaja con la utf8 por defecto