Buenos días Enrique,
Podría recomendarte la función TBL() (ó usar el verbo TABLE) pero ninguno puede hacer la conversión si uno de los conjuntos involucra caracteres de longitud variable tales como UTF-8.
Lo mejor para convertir entre tablas de caracteres (charset) como UTF-8 a ISO-8859-1 (o viceversa) es utilizar un programa externo como iconv (ya viene pre instalado en sistemas Linux / Unix)
Modo de uso (desde la linea de comando):
# iconv -f UTF-8 -t ISO-8859-1 file_utf8.cvs >> tofile_iso88591.cvs
desde bbx puedes usar el comando scall() para invocar iconv.
Ejemplo:
FROM_FILE$="file_utf8.cvs"
TO_FILE$="tofile_iso88591.cvs"
ERROR=scall("iconv -f UTF-8 -t ISO-8859-1 "+FROM_FILE$+" >> "+TO_FILE$+"")
Existe varias alternativas de
iconv para
windows una es
libiconv, su uso es similar a
linux.
------------------
Si decides optar por hacer un programa en bbx, aquí te dejo una pequeña utilidad que podría dar luces de como hacerlo:
0010 rem "iconv.utl""Convert from UTF-8 to ISO-8859-1"
0020 enter STR$
0030 rem let STR$=$C3A1C3A9C3ADC3B3C3BAC3B1$
0040 let POS=0
0100 rem ^100
0110 let LEN=pos($7F$<STR$(POS+1)); if LEN=0 then goto 0500
0120 let POS=POS+LEN
0130 rem
0140 if STR$(POS,1)<$E0$ then goto 0400; rem "Procesado 2 Caracteres
0150 if STR$(POS,1)<$F0$ then goto 0300; rem "Procesado 3 Caracteres
0200 rem ^100
0210 rem "Procesa 4 Caracteres (imposible en ISO-8859)
0220 let STR$=STR$(1,POS-1)+"?"+STR$(POS+4)
0230 goto 0100
0300 rem ^100
0310 rem "Procesa 3 Caracteres (imposible en ISO-8859)
0320 let STR$=STR$(1,POS-1)+"?"+STR$(POS+3)
0330 goto 0100
0400 rem ^100
0410 rem "Procesa 2 Caracteres (convert to latin 1)
0420 let STR$=STR$(1,POS-1)+xor(STR$(POS+1,1),$40$)+STR$(POS+2)
0430 goto 0100
0500 rem ^100
0510 rem "end of program
0520 exit
Modo de uso:
>STR$=$C3A1C3A9C3ADC3B3C3BAC3B1$
>?str$
áéÃóúñ
>call "iconv.utl",str$
>?str$
áéíóúñ
>
el valor retornado en str$ estará basado en el conjunto de caracteres iso-8859-1 (o latin 1).
Espero esto te ayude,
Saludos cordiales,
Carlos E. Mendoza S.
General Manager & CEO
INGENIX Consulting.VE