Foros del Web » Programación para mayores de 30 ;) » Bases de Datos General »

Problema Charset ANSII

Estas en el tema de Problema Charset ANSII en el foro de Bases de Datos General en Foros del Web. Hola a todos, estoy teniendo un problema al migrar un sistema viejo a una plataforma web, el sistema anterior tenía bases en DBF (aparentemente estaba ...
  #1 (permalink)  
Antiguo 12/07/2014, 17:11
 
Fecha de Ingreso: noviembre-2008
Mensajes: 2
Antigüedad: 15 años, 6 meses
Puntos: 0
Problema Charset ANSII

Hola a todos, estoy teniendo un problema al migrar un sistema viejo a una plataforma web, el sistema anterior tenía bases en DBF (aparentemente estaba escrito en FOX que es un lenguaje que usas DBF como bases muy a menudo).

Estoy subiendo las bases a MySQL. Lo primero que intente hacer es subir los DBF (son muchisimos) directamente al mySQL pero desde el Migration Toolkit, ni del Migration Wizard (Workbench) no eran compatibles, sino que habìa que pasar antes los archivos de DBF a CSV por ejemplo. También hay muchos programas pagos que hacen exportación a otros formatos, pero no encontré ninguno que lo haga gratis.

Entonces decidí hacer yo mismo la exportación, para eso habilite la extensión de dbase en PHP y usé estas funciones [URL="http://php.net/manual/es/book.dbase.php"]http://php.net/manual/es/book.dbase.php[/URL] . Pude abrir bien las bases y escribirlas en el server MySQL en sus respectivas tablas.
Pero tengo problemas con los caracteres especiales ÁÉÍÓÚ y Ñ etc... aparentemente los DBF están guardados en formato ascii extendido, la tabla ASCII que todos conocemos, allí por ejemplo el caracter Á es el numero 181 (sería lo mismo que pararse en cualquier editor de texto y escribir Alt+181).
[URL="http://es.wikipedia.org/wiki/ASCII_extendido"]http://es.wikipedia.org/wiki/ASCII_extendido[/URL]

Sin embargo, la mayoría de los archivos de los editores guardan los datos en ANSI (latin 1 o ISO-8859-1) , donde el caracter "Á" es el 193
[URL="http://es.wikipedia.org/wiki/ISO_8859-1"]http://es.wikipedia.org/wiki/ISO_8859-1http://es.wikipedia.org/wiki/ISO_8859-1[/URL]

Y no puedo leer correctamente el archivo original.
Estoy usando las
Código:
$cadena=mb_convert_encoding($cadena,"ISO-8859-1","ASCII");
o
Código:
$cadena=iconv("ASCII","ISO-8859-1",$cadena);
y variando para visualizarlo bien en pantalla con las funciones
Código:
ini_set( 'default_charset', 'ASCII' );
header('content-type:text/html; charset=ASCII');
iconv_set_encoding("internal_encoding", "ASCII");
iconv_set_encoding("output_encoding", "ASCII");
Pero no me dan el resultado esperado, no lo puedo ver bien en pantalla y mucho menos guardarlo correctamente en la base de datos.

Si alguien me puede ayudar se los agradecería (acá les paso un ejemplo de DBF. Si abren el DBF con excel (al menos con mi excel 2010) se puede observar bien los acentos)
[URL="https://dl.dropboxusercontent.com/u/75309684/test.dbf"]https://dl.dropboxusercontent.com/u/75309684/test.dbf[/URL]


Gracias

Última edición por Gepe; 12/07/2014 a las 17:16

Etiquetas: dbf, php
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 01:34.