Área de Tecnologías de la Información y las Comunicaciones Aplicadas
Área de Tecnologías de la Información y las Comunicaciones Aplicadas Universidad de Murcia
Área de Tecnologías de la Información y las Comunicaciones Aplicadas
ATICA
22.11.2017
 
 
FORMS - Generar Fichero UTF8 Imprimir E-mail
El proceso, a alto nivel, para generar un fichero unicode desde Forms es:
  1. Convertir el texto a UTF8 desde PL/SQL con UTL_I18N.STRING_TO_RAW.
  2. Pasar los bytes UTF8 a texto hexadecimal (función RAWTOHEX de Oracle).
  3. 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).
  4. 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 )
 
Área de Tecnologías de la Información y las Comunicaciones Aplicadas
Volver al incio del documento Volver al inicio del documento
Área de Tecnologías de la Información y las Comunicaciones Aplicadas