Ver Mensaje Individual
  #1 (permalink)  
Antiguo 04/03/2010, 11:53
edugilc
 
Fecha de Ingreso: octubre-2009
Mensajes: 154
Antigüedad: 15 años, 1 mes
Puntos: 0
problema codificacion

Hola Chic@s!!
Toy con un problema curioso y en el trabajo m estan metiendo caña asi k mas me vale arregarlo, a ver si me podeis ayudar..

La cosa es que tengo una aplicacion que tiene que funcionar tanto en windows como en linux, yo trabajo con linux,que puede guardar cuestionarios que tu importas excel o txt, pero cuando son txt necesito pasarlos de UTF-16 a UTF-8.
Hasta ahi no hay nada raro.
La aplicacion funciona bien pero cuando uso el caso del .txt y llamo a la funcion que ahora os pongo, al importar un test me sale todo correcto pero entre cada letra me sale un rombo negro con el simbolo de interrogacion dentro, es decir, letra correcta, simbolo,letra correcta, simbolo...asi hasta el final del codumento.
He probado varias cosas y nada me funciona..
Esta es la funcion:

<?php

function convert_file($filename)
{
$fh = fopen($filename, 'r') or die("Cannot open file: ".$filename);

if(filesize($filename) <= 0)
{
fclose($fh);
return;
}
$cons = fread($fh, filesize($filename));
fclose($fh);

if(substr($filename, strlen($filename) - 4) === ".txt")
{
$cons = mb_convert_encoding($cons, "ISO-8859-1", "UTF-16LE");
//$cons = iconv("UTF-8","UTF-16LE", $cons);
//$cons = str_replace( "?", "", $cons);


}
else
{
$cons = mb_convert_encoding($cons, "UTF-8", "UTF-8");
}
$filename = str_replace(".txt", ".csv", $filename);
$fw = fopen($filename, 'w') or die("Cannot open file: ".$filename);
for($i = 0; $i < strlen($cons); $i++)
{
if(ord($cons[$i]) == 9)
fwrite($fw, ';');
else if(ord($cons[$i]) == 34) {}
else
fwrite($fw, $cons[$i]);
}
fclose($fw);
}
?>

desde un scpript php llamo a esta funcion pasandole el archivo..
necesito alguna idea porfavor
muchas gracias!!