Notas del release


46.1 Introducción

El estándar de Unicode es un esquema de codificación de caracteres universal para caracteres y texto escrito. Define con mucha precisión un juego de caracteres, así como un pequeño número de codificaciones para éste. Define un modo coherente de codificar texto en varios idiomas que permite el intercambio de datos de texto internacionalmente y crea las bases para el software global.

Dos de los esquemas de codificación proporcionados por Unicode son UTF-16 y UTF-8.

El esquema de codificación por omisión es UTF-16, que es un formato de codificación de 16 bits. UCS-2 es un subconjunto de UTF-16 que utiliza dos bytes para representar un carácter. UCS-2 se acepta normalmente como la página de códigos universal capaz de representar todos los caracteres necesarios de todas las páginas de códigos existentes de un sólo byte y de doble byte. UCS-2 está registrado en IBM como página de códigos 1200.

El otro formato de codificación de Unicode es UTF-8, que está orientado a byte y que ha sido diseñado para que se utilice con facilidad con los sistemas existentes basados en ASCII. UTF-8 utiliza un número variable de bytes (normalmente 1-3, a veces 4) para almacenar cada uno de los caracteres. Los caracteres de ASCII invariables se almacenan como bytes únicos. Todos los demás caracteres se almacenan utilizando varios bytes. En general, los datos de UTF-8 pueden tratarse como datos ASCII ampliados por medio de un código que no ha sido diseñado para páginas de códigos de varios bytes. UTF-8 está registrado en IBM como página de códigos 1208.

Es importante que las aplicaciones tengan en cuenta los requisitos de la conversión de los datos entre la página de códigos local, UCS-2 y UTF-8. Por ejemplo, 20 caracteres necesitarán exactamente 40 bytes en UCS-2 y entre 20 y 60 bytes en UTF-8, en función de la página de códigos original y de los caracteres utilizados.

46.1.1 Bases de datos y aplicaciones Unicode de DB2

Puede utilizarse una base de datos universal de DB2 para Unix, Windows u OS/2 creada especificando un conjunto de códigos UTF-8 para almacenar datos en formatos UCS-2 y UTF-8. A dicha base de datos se la denomina base de datos Unicode. Los datos de tipo carácter SQL se codifican utilizando UTF-8 y los datos gráficos SQL se codifican utilizando UCS-2. Esto significa que los caracteres MBCS, incluidos los caracteres de un solo byte y de byte doble, se almacenan en columnas de caracteres, y que los caracteres DBCS se almacenan en columnas de gráficos.

Es posible que la página de códigos de una aplicación no coincida con la página de códigos que utiliza DB2 para almacenar datos. En una base de datos no Unicode, cuando las páginas de códigos no sean las mismas, el gestor de la base de datos convierte los datos de carácter y de gráfico (DBCS puro) que se transfieren entre el cliente y el servidor. En una base de datos Unicode, la conversión de datos de carácter entre la página de códigos de cliente y UTF-8 la efectúa automáticamente el gestor de la base de datos, pero todos los datos gráficos (UCS-2) se pasan sin conversión alguna entre el cliente y el servidor.

Figura 1. Conversiones de página de códigos que efectúa el gestor de la base de datos

Conversiones de página de códigos que efectúa el gestor de la base de datos

Notas:

  1. Al conectar con bases de datos Unicode, si la aplicación establece DB2CODEPAGE=1208, la página de códigos local es UTF-8, por lo que no se necesita ninguna conversión de página de códigos.

  2. Cuando se conecta a una base de datos Unicode, las aplicaciones de CLI pueden recibir asimismo datos de tipo carácter como datos gráficos y datos gráficos como datos de tipo carácter.

Para una aplicación es posible especificar una página de códigos UTF-8, indicando que todos los datos gráficos se enviarán y recibirán en UCS-2 y los datos de tipo carácter en UTF-8. Esta página de códigos de aplicación sólo está soportada para bases de datos Unicode.

Otros puntos a tener en cuenta al utilizar Unicode:

  1. La página de códigos de la base de datos en el momento en que se creó la base de datos y, por omisión, su valor lo determina el entorno nacional del sistema operativo (o página de códigos). Las palabras clave CODESET y TERRITORY pueden utilizarse para crear explícitamente una base de datos DB2 Unicode. Por ejemplo:
    CREATE DATABASE unidb USING CODESET UTF-8 TERRITORY US
    
  2. La página de códigos de la aplicación toma asimismo el valor por omisión de la página de códigos local, pero UTF-8 puede alterarla temporalmente de una de estas dos formas:

    
    
  3. Los datos de las columnas GRAPHIC adoptarán exactamente dos bytes por cada carácter Unicode, en tanto que los datos de las columnas CHAR adoptarán de 1 a 3 bytes por cada carácter Unicode. Los límites de SQL en términos de caracteres para las columnas GRAPHIC son, habitualmente, la mitad que para las columnas CHAR, pero en términos de bytes son iguales. Por ejemplo, la longitud máxima de caracteres para una columna CHAR es de 254 y l longitud máxima de caracteres para una columna de gráficos es de 127. Para obtener más información, consulte el apartado MAX en el capítulo "Funciones" del manual Consulta de SQL.
    
    
  4. Un literal gráfico se diferencia de un literal de caracteres por medio de un prefijo G. Por ejemplo:
    SELECT * FROM mytable WHERE mychar = 'utf-8 data'
                                            AND mygraphic = G'ucs-2 data'
    

    Nota:
    El prefijo G es opcional para las bases de datos Unicode.
    Vea 40.6.2.4, "Literales en bases de datos Unicode" para obtener más información y para soporte actualizado.
    
    
  5. El soporte para las aplicaciones CLI/ODBC y JDBC difiere del soporte para las aplicaciones intercaladas. Para obtener información específica para el soporte de CLI/ODBC, vea "CLI Guide and Reference".
    
    
  6. El orden de los bytes de los datos de UCS-2 puede diferir entre las diversas plataformas. Internamente, DB2 utiliza el formato big-endian.

46.1.2 Actualizaciones de documentación

Estas notas del release incluyen actualizaciones de la información siguiente sobre la utilización de Unicode con DB2 Versión 7.1:

Para obtener más información sobre la utilización de Unicode con DB2, consulte el manual Administration Guide, apéndice de Soporte de idioma nacional (NLS): "Soporte de Unicode en DB2 UDB".


[ Principio de página | Página anterior | Página siguiente | Contenido | Índice ]