<html>
<head>
<style><!--
.hmmessage P
{
margin:0px;
padding:0px
}
body.hmmessage
{
font-size: 12pt;
font-family:Calibri
}
--></style></head>
<body class='hmmessage'><div dir='ltr'>Leo, ya te mande una nueva versión de la tesina. Ya me voy acercando a destino.. Con respecto a la entrega, hay q instarla allá en el servidor de la facultad?<br><br>Reviso lo del encoding entonces, por lo menos no estaba tan  mal encaminado ;)<br>Ya vendra codigo de mejor calidad con el tiempo, espero!<br><br>Saludos<br><br><div>> From: leonardot@pegasusnet.com.ar<br>> To: php-avanzado@pato2.fi.mdp.edu.ar<br>> Date: Mon, 14 Jul 2014 14:53:18 -0300<br>> Subject: Re: [Php-avanzado] Plazo de entrega<br>> <br>> Hola Gabriel!<br>> <br>> El lun, 14-07-2014 a las 14:20 -0300, Gabriel Lenti escribió:<br>> > Lo mande el 3/7, pero si preferís puedo volver a enviar una versión<br>> > mas reciente, he mejorado varias cosas ya.<br>> <br>>    Dale! Enviame una versión más nueva, y avisame por favor por la lista.<br>> <br>> > Una de las dudas q tengo es con respecto al menejo del juego de<br>> > caracteres de los datos entrantes desde el cliente. Me acuerdo q nos<br>> > comentaste algo al respecto en la ultima clase. Cuando busque no<br>> > encontré poca info sobre el tema, así q arme algo mas bien a prueba y<br>> > error. Pero le tengo dudas sobe su correcto funcionamiento y de si<br>> > haría falta agregar algún juego de caracteres mas en la secuencia de<br>> > reconocimiento. Este es el código:<br>> > <br>> > foreach ($_GET as $k => $v) {<br>> >     if (is_array($v)) {<br>> >         foreach ($v as $y => $x) {<br>> >             if (!($from = mb_detect_encoding($x, 'UTF-8,<br>> > ISO-8859-1'))) $from = 'auto';<br>> >             $v[$y] = mb_convert_encoding($x, 'utf8', $from);<br>> >         }<br>> >         unset($x);<br>> >         $_POST[$k] = $v;<br>> >         continue;<br>> >     }<br>> >     if (!($from = mb_detect_encoding($v, 'UTF-8, ISO-8859-1'))) $from<br>> > = 'auto';<br>> >     $_POST[$k] = mb_convert_encoding($v, 'utf8', $from);<br>> > }<br>> > <br>> > Idem para $_POST<br>> <br>>    La conversión está bien estructurada, pero tiene una cosa rara.<br>>   Por un lado el:<br>> <br>> !($from = mb_detect_encoding($v, 'UTF-8, ISO-8859-1')) <br>> <br>>       funciona medio de casualidad, porque al no ser en modo estricto, podría<br>> no coincidir con algunos juegos de caracteres. En realidad, la lógica es<br>> más fácil<br>> <br>> si (no se detecta UTF-8)<br>> entonces: convierto todo a UTF-8<br>> <br>> if (mb_detect_encoding($_POST[$k]) != 'UTF-8') {<br>>         $_POST[$k] = mb_convert_encoding($_POST[$k],'UTF-8');<br>> }<br>> <br>> porque lo que se quiere es convertir todo a un juego de caracteres, en<br>> este caso UTF-8, pero si ya es UTF-8 no hacer una doble conversión, ya<br>> que puede romper algunas caracteres.<br>> <br>>  Después el continue; en vez de usar un else es solo para complicarte la<br>> vida y hacer el código más difícil de leer.<br>>         Si querés complicarte, hace una función recursiva que si es string,<br>> converta y si es array, se llame a si misma ;-)<br>> <br>>  Saludos!<br>> <br>> -- <br>> Leonardo Tadei<br>> leonardot@pegasusnet.com.ar<br>> Web: http://leonardo.tadei.com.ar<br>> Firma pública: http://www.pegasusnet.com.ar/LeonardoTadei-public.key<br>> <br>> _______________________________________________<br>> Lista de correo: Php-avanzado<br>> Mensajes a la lista: Php-avanzado@pato2.fi.mdp.edu.ar<br>> Administración Web: http://www3.fi.mdp.edu.ar/cgi-bin/mailman/listinfo/php-avanzado<br>> Desubscripción: php-avanzado-request@pato2.fi.mdp.edu.ar?subject=unsubscribe<br></div>                                       </div></body>
</html>