|
FORMS - Generar Fichero UTF8 |
|
|
El proceso, a alto nivel, para generar un fichero unicode desde Forms es:
- Convertir el texto a UTF8 desde PL/SQL con UTL_I18N.STRING_TO_RAW.
- Pasar los bytes UTF8 a texto hexadecimal (función RAWTOHEX de Oracle).
- Escribir el texto hexadecimal (correspondiente a los bytes UTF8) en un fichero de texto desde forms (TEXT_IO), teniendo en cuenta que los 3 primeros bytes de un fichero unicode son siempre "EFBBBF" (por tanto escribimos esta cabecera al inicio del citado fichero de texto).
- Generar un fichero binario (el fichero unicode o UTF8) a partir del contenido del fichero de texto, con la utilidad HEX2BIN.EXE.
Las claves del proceso son varias:
- Poder convertir a UTF8 desde PL/SQL: paquete UTL_I18N.
- Saber que un fichero unicode es un fichero binario con una cabecera especial (nota Oracle "435430.1").
- Saltar la limitación de Forms (q sólo sabe escribir ficheros de texto con TEXT_IO), generando un fichero de texto desde Forms con los caracteres hexadecimales correspondientes a los bytes del fichero binario, y usando la utilidad HEX2BIN.EXE para generar el fichero binario correspondiente a los caracteres hexadecimales contenidos en el fichero de texto.
Las partes clave del código PL/SQL que hemos incluido en un paquete FORMS son:
- Generar el fichero de texto con los caracteres hexadecimales correspondientes a los bytes UTF8:
...
TEXT_IO.PUT(FICHERO, 'EFBBBF'); -- Cabecera del fichero unicode
...
TEXT_IO.PUT(FICHERO, RAWTOHEX(UTL_I18N.STRING_TO_RAW(s_texto || CHR(10), 'UTF8'))); -- Conversión a UTF8 y a su vez a hexadecimal
...
- Generar el fichero binario desde Forms:
HOST('i:\mncs\bin\hex2bin.exe "' ||RUTA||NOMBRE||'.HEX'|| '" "' ||RUTA||NOMBRE||'.XML'||'"', NO_SCREEN);
|
|
Última modificación ( 09.03.2010 )
|