Recents
Encodings en Genexus X Evolution 2Unofficial Content

A partir de GeneXus X Evolution 2 Upgrade 1, los encodings usados en las funciones estándar que lo requieren se unifican para todos los generadores. Para esto se define un dominio de  nombre Encoding y tipo Character(255) que se distribuye con GeneXus.

Esto aporta a la portabilidad del código y también ayuda al desarrollador a elegir valores válidos.

Por ejemplo:

  • En vez de escribir: &xmlreader.SetDocEncoding(!'UTF-8')
  • Puede escribir: &xmlreader.SetDocEncoding(Encoding.UTF-8)

Además de este método de los tipos de datos XML, existen estas otras funciones y métodos que también reciben como parámetro un string con el nombre del encoding.

Las funciones y método que utilizan enconding son:

  • ByteCount(CharacterExpression:Att|Var|Cons, Encoding:Att|Var|Cons): Numeric
  • DFWOpen(FileName: Character, FieldDelimiter: Character, StringDelimiter: Character, Append: Numeric, Encoding:Character) : Numeric
  • DFROpen(FileName: Character, RegLength: Numeric, FieldDelimiter: Character, StringDelimiter:Character, Encoding:Character): Numeric
  • &xmlreader.SetDocEncoding(Encoding:Character)
  • &xmlreader.SetNodeEncoding(Encoding:Character)
  • &xmlwriter.WriteStartDocument(Encoding:Character, Standalone:Boolean)

Dominio Encoding (Lista de encodings unificados)

  .NET Java
ASCII si si
Big5 si si
Big5-HKSCS no si
EUC-JP si si
EUC-KR si si
GB18030 si si
GB2312 si si
GBK si si
IBM850 si si
ISO-2022-JP si si
ISO-8859-1 si si
ISO-8859-10 no no
ISO-8859-13 si si
ISO-8859-15 si si
ISO-8859-16 no no
ISO-8859-2 si si
ISO-8859-3 si si
ISO-8859-4 si si
ISO-8859-5 si si
ISO-8859-6 si si
ISO-8859-7 si si
ISO-8859-8 si si
ISO-8859-9 si si
KOI8-R si si
KOI8-U si no
KSC_5601 si si
Shift_JIS si si
TIS-620 si si
US-ASCII si si
UTF-16BE BOM si si
UTF-16LE BOM si si
UTF-32 si no
UTF-32 BOM si no
UTF-32BE BOM si no
UTF-32LE BOM si no
UTF-8 si si
UTF-8 BOM si si
Windows-1250 si si
Windows-1251 si si
Windows-1252 si si
Windows-1253 si si
Windows-1254 si si
Windows-1255 si si
Windows-1256 si si
Windows-1257 si si
Windows-1258 si si
Windows-31J no si
Windows-874 si si

 

BOM (Byte order Mark)

Los encodings UTF* BOM se utilizan para indicar que se quiere usar un byte order mark al principio del file o stream para indicar en qué tipo de Unicode esta codificado el texto del mismo.

Para UTF-8 la secuencia de bytes que representa el BOM es la 0xEF, 0xBB, 0xBF.

Para UTF-16BE la secuencia es 0xFE, 0xFF

Para UTF-16LE la secuencia es 0xFF, 0xFE

Para UTF-32BE la secuencia es 0x00, 0x00,  0xFE, 0xFF

Para UTF-32LE la secuencia es 0xFF, 0xFE, 0x00, 0x00

Compatibilidad

  • The followings particular names of encodings for the WriteStartDocument XMLWriter type in java, can still be used:

ISO8859_* mapping  ISO-8859-*
8859_* mapping ISO-8859-*
UTF8 mapping UTF-8

In Java, Net and Ruby the function &xmlwriter.WriteStartDocument() generates the following xml header if no encoding is passed:

<?xml version="1.0" encoding="ISO-8859-1"?>

  • En las Kbs migradas de versiones anteriores no se tiene el dominio ya que estos no se importan en la conversión/cambio de upgrade, esto no es un bug sino que esta especificado asi, entonces para estos casos se puede hacer lo siguiente:

1. Importar el dominio manualmente desde <genexus_home>\Startup\Common\Domains.xpz >> recomendado

2. Usar los valores del dominio como strings respetando las constantes aqui documentadas