01 12:29 PM Page Unicode. Objetivos

Java-Apen-G 3/31/01 12:29 PM Page 1285 G Unicode® Objetivos • Familiarizarse con Unicode. • Hablar sobre la misión del consorcio Unicode. • Hablar s

14 downloads 288 Views 73KB Size

Recommend Stories


10 12:58 PM Page 1
libronaturalesnew1cambioultimo.qxp:Layout 1 12/10/10 12:58 PM Page 1 2010 libronaturalesnew1cambioultimo.qxp:Layout 1 12/10/10 12:58 PM Page 2 MUS

06 6:30 PM Page 103 ESCRITURA
04_lengua.qxd 5/10/06 6:30 PM Page 103 ESCRITURA 04_lengua.qxd 5/10/06 6:30 PM Page 104 EJE Escritura Los saberes que se ponen en juego En

Story Transcript

Java-Apen-G 3/31/01 12:29 PM Page 1285

G Unicode®

Objetivos • Familiarizarse con Unicode. • Hablar sobre la misión del consorcio Unicode. • Hablar sobre la base del diseño de Unicode. • Conocer las tres formas de codificación de Unicode: UTF-8, UTF-16 y UTF-32. • Introducir los caracteres y glifos. • Hablar sobre las ventajas y desventajas de usar Unicode. • Proporcionar un breve paseo por el sitio Web del consorcio Unicode.

Java-Apen-G 3/31/01 12:29 PM Page 1286

1286

Unicode®

Apéndice G

Plan general G.1 G.2 G.3 G.4 G.5 G.6 G.7

Introducción Formatos de transformación de Unicode Caracteres y glifos Ventajas/Desventajas de Unicode Sitio Web del consorcio Unicode Uso de Unicode Rangos de caracteres

Resumen • Terminología • Ejercicios de autoevaluación • Respuestas a los ejercicios de autoevaluación • Ejercicios

G.1 Introducción El uso de codificaciones de caracteres (es decir, valores numéricos asociados con caracteres) inconsistentes al desarrollar productos de software globales provoca graves problemas, ya que las computadoras procesan la información utilizando números. Por ejemplo, el carácter “a” se convierte en un valor numérico para que una computadora pueda manipular esa pieza de información. Muchos países y corporaciones han desarrollado sus propios sistemas de codificación, los cuales son incompatibles con los sistemas de codificación de otros países y corporaciones. Por ejemplo, el sistema operativo Microsoft Windows asigna el valor 0xC0 al carácter “A con un acento grave” mientras que el sistema operativo Apple Macintosh asigna ese mismo valor a un signo de interrogación de apertura. Esto produce una mala representación y la posible corrupción de los datos, ya que éstos no se procesan de la manera esperada. A falta de un estándar universal de codificación de caracteres implementado ampliamente, los desarrolladores de software de todo el mundo tuvieron que localizar sus productos extensivamente, antes de distribuirlos. La localización incluye la traducción del lenguaje y la adaptación cultural del contenido. El proceso de localización generalmente incluye modificaciones considerables al código fuente (como la conversión de valores numéricos y las suposiciones subyacentes por parte de los programadores), lo cual produce un aumento en costos y retrasos en la liberación del software. Por ejemplo, algunos programadores de habla inglesa podrían diseñar productos de software global suponiendo que un solo carácter puede ser representado por un byte. Sin embargo, cuando esos productos se localizan en mercados asiáticos las suposiciones del programador ya no son válidas, por lo cual la mayor parte del código (si no es que todo) necesita volver a escribirse. La localización es necesaria cada vez que se libera una versión. Para cuando el producto de software se localiza para un mercado específico ya está lista una nueva versión, la cual también necesita localizarse. Como resultado, es muy complicado y costoso producir y distribuir productos de software global en un mercado en el que no existe un estándar universal de codificación de caracteres. En respuesta a esta situación se creó el Estándar Unicode, un estándar de codificación que facilita la producción y distribución de software. El estándar Unicode resume una especificación para producir la codificación consistente de los caracteres y símbolos de todo el mundo. Los productos de software que se encargan del texto codificado en el estándar Unicode necesitan localizarse, pero este proceso es más simple y eficiente debido a que los valores numéricos no necesitan convertirse y las suposiciones de los programadores acerca de la codificación de caracteres son universales. El estándar Unicode es mantenido por una organización sin fines de lucro conocida como Consorcio Unicode, cuyos miembros incluyen a Apple, IBM, Microsoft, Oracle, Sun Microsystems, Sybase y muchos otros. Cuando el Consorcio ideó y desarrolló el estándar Unicode, querían un sistema de codificación que fuera universal, eficiente, uniforme y sin ambigüedades. Un sistema de codificación universal comprende a todos los caracteres que se utilizan comúnmente. Un sistema de codificación eficiente permite que los archivos de texto se analicen con facilidad. Un sistema de codificación uniforme asigna valores fijos a todos los caracteres. Un sistema de codificación sin ambigüedades representa a un carácter dado en una manera consistente. A estos cuatro términos se les conoce como la base del diseño del estándar Unicode.

Java-Apen-G 3/31/01 12:29 PM Page 1287

Apéndice G

Unicode®

1287

G.2 Formatos de transformación de Unicode Aunque Unicode incorpora el conjunto de caracteres (es decir, una colección de caracteres) ASCII limitado, comprende un conjunto de caracteres más comprensivo. En ASCII, cada carácter está representado por un byte que contiene 0s y 1s. Un byte es capaz de almacenar los números binarios de 0 a 255. A cada carácter se le asigna un número entre 0 y 255, por lo cual los sistemas basados en ASCII sólo soportan 256 caracteres, una minúscula fracción de los caracteres existentes en el mundo. Unicode extiende el conjunto de caracteres ASCII al codificar la gran mayoría de los caracteres de todo el mundo. El estándar Unicode codifica a todos esos caracteres en un espacio numérico uniforme, de 0 a 10FFFF en hexadecimal. Una implementación expresará estos números en uno de varios formatos de transformación, seleccionando el que se adapte mejor a la aplicación específica en consideración. Hay tres de esos formatos en uso: UTF-8, UTF-16 y UTF-32, dependiendo del tamaño de las unidades (en bits) utilizadas. UTF-8, un formato de codificación de anchura variable, requiere de uno a cuatro bytes para expresar cada uno de los caracteres Unicode. Los datos de UTF-8 consisten en bytes de 8 bits (secuencias de uno, dos, tres o cuatro bytes, dependiendo del carácter que se vaya a codificar) y son bastante adecuados para los sistemas basados en ASCII, cuando predominan los caracteres de un byte (ASCII representa los caracteres como un byte). En la actualidad, UTF-8 se implementa ampliamente en sistemas UNIX y bases de datos. El formato de codificación UTF-16 de anchura variable expresa los caracteres Unicode en unidades de 16 bits (es decir, como dos bytes adyacentes, o un entero corto en muchos equipos). La mayoría de los caracteres de Unicode se expresan en una sola unidad de 16 bits. Sin embargo, los caracteres con valores por arriba de FFFF en hexadecimal se expresan mediante un par ordenado de unidades de 16 bits, conocidas como sustitutos. Los sustitutos son enteros de 16 bits en el rango de D800 a DFFF, que se utilizan únicamente para el propósito de “escapar” hacia caracteres con una numeración más alta. De esta forma pueden expresarse aproximadamente un millón de caracteres. Aunque un par de sustitutos requiere de 32 bits para representar caracteres, al utilizar estas unidades de 16 bits el uso del espacio se hace eficiente. Los sustitutos son caracteres raros en las implementaciones actuales. Muchas implementaciones para el manejo de cadenas se escriben en términos de UTF-16. (Nota: Los detalles y el código de ejemplo para el manejo de UTF-16 están disponibles en el sitio Web del consorcio Unicode, en www.unicode.org.) Las implementaciones que requieren de un uso considerable de caracteres raros o secuencias de comandos completas con una codificación por encima del FFFF hexadecimal deben usar UTF-32, un formato de codificación de 32 bits con anchura fija que, por lo general, requiere del doble de memoria que los caracteres codificados con UTF-16. La principal ventaja del formato de codificación UTF-32 de anchura fija es que expresa uniformemente a todos los caracteres, por lo que es fácil de manejar en los arreglos. Hay unos cuantos lineamientos que indican cuándo utilizar un formato de codificación específico. El mejor formato de codificación a utilizar depende de los sistemas computacionales y los protocolos de negocios, no de la información en sí. Generalmente debe utilizarse el formato de codificación UTF-8 cuando los sistemas computacionales y los protocolos de negocios requieren que la información se maneje en unidades de 8 bits, especialmente en los sistemas heredados que se están actualizando, ya que esto a menudo simplifica los cambios que deben realizarse en los programas existentes. Por esta razón, UTF-8 se ha convertido en el formato de codificación preferido en Internet. De la misma forma, UTF-16 es el formato de codificación preferido en aplicaciones para Microsoft Windows. Es probable que UTF-32 se utilice más ampliamente en el futuro, a medida que se codifiquen más caracteres con valores por encima del FFFF hexadecimal. Además, UTF-32 requiere de un manejo menos sofisticado que UTF-16, debido a la presencia de los pares de sustitutos. En la figura G.1 se muestran las distintas formas en que los tres formatos de codificación manejan la codificación de caracteres.

G.3 Caracteres y glifos El Estándar Unicode consiste de caracteres, componentes escritos (es decir, alfabetos, números, signos de puntuación, acentos, etcétera) que pueden ser representados por valores numéricos. Algunos ejemplos de caracteres son: U+0041, LETRA A MAYÚSCULA EN LATÍN. En la primera representación de caracteres, U+ yyyy es un valor de código, en donde U+ se refiere a los valores de código de Unicode, a diferencia de los demás valores hexadecimales. Las letras yyyy representan un número hexadecimal de cuatro dígitos, perteneciente a

Java-Apen-G 3/31/01 12:29 PM Page 1288

1288

Unicode®

Apéndice G

Carácter

UTF-8

UTF-16

UTF-32

LETRA A MAYÚSCULA EN LATÍN

0x41

0x0041

0x00000041

LETRA ALFA MAYÚSCULA EN GRIEGO

0xCD 0x91

0x0391

0x00000391

IDEOGRAMA UNIFICADO CJK-4E95

0xE4 0xBA 0x95

0x4E95

0x00004E95

LETRA A EN CURSIVA ANTIGUA

0xF0 0x80 0x83 0x80

0xDC00 0xDF00

0x00010300

Figura G.1 La correlación entre los tres formatos de codificación.

Figura G.2 Ejemplos de varios glifos del carácter A.

un carácter codificado. Los valores de códigos son combinaciones de bits que representan caracteres codificados. Los caracteres se representan utilizando glifos, varias figuras, tipos de letra y tamaños para mostrar caracteres. No hay valores de código para los glifos en el estándar Unicode. En la figura G.2 se muestran ejemplos de glifos. El estándar Unicode comprende los alfabetos, ideogramas, silabarios, signos de puntuación, signos diacríticos, operadores matemáticos, etcétera, que comprenden los lenguajes escritos y manuscritos del mundo. Un signo diacrítico es un signo especial que se agrega a un carácter para diferenciarlo de otra letra, o para indicar un acento (por ejemplo, en español se utiliza la tilde “~” por encima del carácter “n”). Actualmente, Unicode proporciona los valores de código para 94,140 representaciones de caracteres, con más de 880,000 valores de código reservados para una expansión en el futuro.

G.4 Ventajas/Desventajas de Unicode El estándar Unicode tiene varias ventajas considerables que promueven su uso. Una es el impacto que tiene sobre el rendimiento de la economía internacional. Unicode estandariza los caracteres para los sistemas de escritura mundiales en un modelo uniforme que promueve la transferencia y la compartición de información. Los programas que se desarrollan usando este esquema mantienen su precisión, ya que cada carácter tiene una sola definición (es decir, a es siempre U+0061, % es siempre U+0025). Esto permite a las corporaciones administrar las altas demandas de los mercados internacionales, al procesar distintos sistemas de escritura al mismo tiempo. Además, los caracteres pueden administrarse en forma idéntica, evitando así la confusión ocasionada por las distintas arquitecturas de códigos de caracteres. Lo que es más, al administrar los datos de una manera consistente se elimina la corrupción de los mismos, ya que la información puede ordenarse, buscarse y manipularse utilizando un proceso consistente. Otra ventaja del estándar Unicode es la portabilidad (es decir, software que puede ejecutarse en computadoras distintas o con distintos sistemas operativos). La mayoría de los sistemas operativos, bases de datos, lenguajes de programación y navegadores Web soportan actualmente, o planean soportar, Unicode. Una desventaja del estándar Unicode es la cantidad de memoria que requieren UTF-16 y UTF-32. Los conjuntos de caracteres ASCII tienen una longitud de 8 bits, por lo que requieren de una menor capacidad de almacenamiento que el conjunto de caracteres Unicode predeterminado de 16 bits. Sin embargo, el conjunto de caracteres de doble byte (DBCS) y el conjunto de caracteres multibyte (MBCS) que codifican caracteres asiáticos (ideogramas) requieren de dos a cuatro bytes, respectivamente. En tales casos, pueden usarse los formatos de codificación UTF-16 o UTF-32 con pocas restricciones en cuanto a memoria y rendimiento. Otra desventaja de Unicode es que, aunque incluye más caracteres que cualquier otro conjunto de caracteres de uso común, todavía no codifica a todos los caracteres escritos del mundo.

Java-Apen-G 3/31/01 12:29 PM Page 1289

Apéndice G

Unicode®

1289

Otra desventaja del estándar Unicode es que UTF-8 y UTF-16 son formatos de codificación con anchura variable, por lo que los caracteres ocupan distintas cantidades de memoria.

G.5 Sitio Web del consorcio Unicode Si desea aprender más acerca del estándar Unicode visite el sitio www.unicode.org. Este sitio cuenta con mucha información acerca de este estándar que puede ser útil para aquellos que no lo conocen. Actualmente, la página está organizada en varias secciones: New to Unicode (Introducción a Unicode), General Information (Información general), The Consortium (El consorcio), The Unicode Standard (El Estándar Unicode), Work in Progress (Trabajo en progreso) y For Members (Para miembros). La sección New to Unicode consiste de dos subsecciones: What is Unicode (Qué es Unicode) y How to Use this Site (Cómo usar este sitio). La primera subsección proporciona una introducción técnica a Unicode, describiendo los principios de diseño, las interpretaciones y asignaciones de caracteres, el procesamiento de texto y la conformidad con Unicode. Esta subsección se recomienda como lectura para todos los que no conozcan nada sobre el tema; además, se proporciona una lista de vínculos relacionados que proveen al lector información adicional sobre Unicode. La subsección How to Use this Site contiene información acerca de cómo usar el sitio y cómo navegar en él, así como hipervínculos hacia recursos adicionales. La sección General Information contiene seis subsecciones: Where is my Character (Dónde está mi carácter), Display Problems (Problemas de despliegue), Useful Resources (Recursos útiles), Enabled Products (Productos habilitados), Mail Lists (Listas de correo) y Conferences (Conferencias). Las princi-

pales áreas cubiertas en esta sección incluyen un vínculo hacia las tablas de códigos Unicode (un listado completo de los valores de códigos) elaboradas por el Consorcio Unicode, así como un resumen detallado sobre cómo localizar un carácter codificado en la tabla de códigos. Además, la sección contiene asesoría sobre cómo configurar distintos sistemas operativos y navegadores Web, para que los caracteres Unicode puedan verse apropiadamente. Asimismo, desde esta sección el usuario puede navegar hacia otros sitios que proporcionan información sobre diversos temas, como tipos de letra, lingüística y otros estándares como Armenian Standards Page (Página de estándares armenios) y Chinese GB 18030 Encoding Standard (Estándar de codificación chino GB 18030). La sección The Consortium consta de cinco subsecciones: Who we are (Quiénes somos), Our Members (Nuestros miembros), How to Join (Cómo unirse), Press Info (Información de prensa) y Contact Us (Contactos). Esta sección proporciona una lista de los miembros actuales del Consorcio Unicode, así como información acerca de cómo convertirse en miembro. Aquí se muestran los privilegios para cada tipo de miembro: full (completo), associate (asociado), specialist (especialista) e individual (individuo), junto con las cuotas de cada tipo. La sección The Unicode Standard consiste de nueve subsecciones: Start Here (Empiece aquí), Latest Version (Versión más reciente), Technical Reports (Informes técnicos), Code Charts (Tablas de código), Unicode Data (Datos de Unicode), Update & Errata (Actualizaciones y fe de errata), Unicode Policies (Políticas de Unicode), Glossary (Glosario) y Technical FAQ (FAQ técnica). Esta sección describe las ac-

tualizaciones que se aplican a la versión más reciente del estándar Unicode, así como la categorización de toda la codificación definida. El usuario puede conocer las modificaciones realizadas en la versión más reciente para abarcar más características y capacidades. Por ejemplo, una mejora de la versión 3.1 es que contiene caracteres codificados adicionales. Además, si los usuarios no están familiarizados con los términos del vocabulario utilizado por el Consorcio Unicode, pueden navegar hacia la subsección Glossary. La sección Work in Progress consta de tres subsecciones: Calendar of Meetings (Calendario de reuniones), Proposed Characters (Caracteres propuestos) y Submitting Proposals (Envío de proposiciones). Esta sección presenta al usuario un catálogo de los caracteres incluidos recientemente en el esquema del

estándar Unicode, así como los caracteres que se están considerando para ser incluidos. Si los usuarios determinan que se ha pasado por alto un carácter, pueden enviar una propuesta por escrito para incluirlo. La subsección Submitting Proposals contiene los estrictos lineamientos que deben respetarse al enviar proposiciones por escrito. La sección For Members consiste de dos subsecciones: Member Resources (Recursos para miembros) y Working Documents (Documentos de trabajo). Estas subsecciones están protegidas con contraseña; solamente los miembros del consorcio tienen acceso a ellas.

Java-Apen-G 3/31/01 12:29 PM Page 1290

1290

Unicode®

Apéndice G

G.6 Uso de Unicode Muchos lenguajes de programación (por ejemplo: C, Java, JavaScript, Perl, Visual Basic, etc.) proporcionan cierto nivel de soporte para el estándar Unicode. En la figura G.3 se muestra un programa de Java que imprime el texto “¡Bienvenido a Unicode!” en cinco idiomas distintos: inglés, francés, alemán, portugués y español. (Nota: El sitio Web del Consorcio Unicode contiene un vínculo hacia las tablas de códigos que muestran los valores de código Unicode de 16 bits.)

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46

// Fig G.3: Unicode.java // Demostración de cómo usar Unicode en programas de Java. // paquetes básicos de Java import java.awt.*; // paquetes de extensión de Java import javax.swing.*; public class Unicode extends JFrame { private JLabel ingles, frances, aleman, portugues, espaniol; // constructor de Unicode public Unicode() { super( “Demostración de Unicode” ); // obtener panel de contenido y establecer su esquema Container contenedor = getContentPane(); contenedor.setLayout( new GridLayout( 8, 1 ) ); // constructor de JLabel con un argumento tipo cadena ingles = new JLabel( “\u0057\u0065\u006C\u0063\u006F” + “\u006D\u0065\u0020\u0074\u006F\u0020Unicode\u0021” ); ingles.setToolTipText( “Esto es inglés” ); contenedor.add( ingles ); frances = new JLabel( “\u0042\u0069\u0065\u006E\u0076” + “\u0065\u006E\u0075\u0065\u0020\u0061\u0075\u0020” + “Unicode\u0021” ); frances.setToolTipText( “Esto es francés” ); contenedor.add( frances ); aleman = new JLabel( “\u0057\u0069\u006C\u006B\u006F” + “\u006D\u006D\u0065\u006E\u0020\u007A\u0075\u0020” + “Unicode\u0021” ); aleman.setToolTipText( “Esto es alemán” ); contenedor.add( aleman ); portugues = new JLabel( “\u0053\u00E9\u006A\u0061\u0020” + “\u0042\u0065\u006D\u0076\u0069\u006E\u0064” + “\u006F\u0020Unicode\u0021” ); portugues.setToolTipText( “Esto es portugués” ); contenedor.add( portugues );

Figura G.3 Programa de Java que utiliza codificación de Unicode. (Parte 1 de 2.)

Java-Apen-G 3/31/01 12:29 PM Page 1291

Unicode®

Apéndice G

47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66

1291

espaniol = new JLabel( “\u0042\u0069\u0065\u006E\u0076” + “\u0065\u006E\u0069\u0064\u0061\u0020\u0061\u0020” + “Unicode\u0021” ); espaniol.setToolTipText( “Esto es español” ); contenedor.add( espaniol ); } // fin del constructor de Unicode // ejecutar la aplicación public static void main( String args[] ) { Unicode aplicacion = new Unicode(); aplicacion.setDefaultCloseOperation( JFrame.EXIT_ON_CLOSE ); aplicacion.pack(); aplicacion.setVisible( true ); } // fin del método main }

// fin de la clase Unicode

Figura G.3 Programa de Java que utiliza codificación de Unicode. (Parte 2 de 2.)

El programa Unicode.java utiliza secuencias de escape para representar caracteres. Una secuencia de escape tiene la forma \uyyyy, en donde yyyy representa el valor de código hexadecimal de cuatro dígitos. Las líneas 24 y 25 contienen las series de secuencias de escape necesarias para imprimir el mensaje “Bienvenido a Unicode!” en inglés (Welcome to Unicode). La primera secuencia de escape ( \u0057 ) corresponde al carácter “W,” la segunda secuencia de escape ( \u0065 ) corresponde al carácter “e”, y así sucesivamente. La secuencia de escape \u0020 (línea 25) es la codificación para el carácter de espacio. Las secuencias de escape\u0074 y \u006F corresponden a la palabra “to”. Observe que “Unicode” no se codifica, ya que es una marca registrada y no tiene traducción equivalente en la mayoría de los lenguajes. La línea 25 también contiene la secuencia de escape \u0021 para el signo de admiración ( ! ). Las líneas 29 a 49 contienen las secuencias de escape para los otros cuatro idiomas. Los caracteres de inglés, francés, alemán, portugués y español se encuentran en el bloque Basic Latin (Latín básico).

G.7 Rangos de caracteres El estándar Unicode asigna valores de código, que varían de 0000 (Latín básico) a E007F (Marcas), a los caracteres escritos de todo el mundo. Actualmente existen valores de código para 94,140 caracteres. Para simplificar la búsqueda de un carácter y su valor de código asociado, el estándar Unicode generalmente agrupa los valores de código por escritura y función (es decir, los caracteres en latín se agrupan en un bloque, los operadores matemáticos en otro bloque, etcétera). Como regla, una escritura es un sistema de escritura individual que se utiliza para varios lenguajes (por ejemplo, la escritura del latín se utiliza para el inglés, francés, español, etcétera). La página Code Charts (Tablas de códigos) en el sitio Web del Consorcio Unicode enlista todos los bloques definidos y sus respectivos valores de códigos. En la figura G.4 se enlistan algunos bloques (escrituras) del sitio Web y su rango de valores de código.

Java-Apen-G 3/31/01 12:29 PM Page 1292

1292

Unicode®

Apéndice G

Escritura

Rango de valores de código

Arábica

U+0600–U+06FF

Latín básico

U+0000–U+007F

Bengalí (La India)

U+0980–U+09FF

Cherokee (Nativo de américa)

U+13A0–U+13FF

Ideogramas Unificados CJK (Este de Asia)

U+4E00–U+9FAF

Cirílico (Rusia y Este de Europa)

U+0400–U+04FF

Etiope

U+1200–U+137F

Griego

U+0370–U+03FF

Hangul Jamo (Corea)

U+1100–U+11FF

Hebreo

U+0590–U+05FF

Hiragana (Japón)

U+3040–U+309F

Khmer (Cambodia)

U+1780–U+17FF

Lao (Laos)

U+0E80–U+0EFF

Mongol

U+1800–U+18AF

Myanmar

U+1000–U+109F

Ogham (Irlanda)

U+1680–U+169F

Runic (Alemania y Escandinavia)

U+16A0–U+16FF

Sinhala (Sri Lanka)

U+0D80–U+0DFF

Telugu (La India)

U+0C00–U+0C7F

Thai

U+0E00–U+0E7F

Figura G.4 Algunos rangos de caracteres.

RESUMEN • Antes de Unicode, los desarrolladores de software tenían muchas dificultades debido al uso de una codificación de caracteres inconsistente (es decir, intercambiar valores numéricos por caracteres). La mayoría de los países y organizaciones tenían sus propios sistemas de codificación, los cuales eran incompatibles. Un buen ejemplo son los sistemas de codificación individuales en las plataformas Windows y Macintosh. • Las computadoras procesan la información convirtiendo los caracteres en valores numéricos. Por ejemplo, el carácter “a” se convierte en un valor numérico para que una computadora pueda manipular esa pieza de información. • La localización de software global requiere de modificaciones considerables en el código fuente, lo cual produce un aumento en los costos y retrasa la liberación del producto. • La localización es necesaria cada vez que se libera una versión. Para cuando el producto de software se localiza para un mercado específico ya está lista una nueva versión, la cual también necesita localizarse. Como resultado, es muy complicado y costoso producir y distribuir productos de software global en un mercado en el que no existe un estándar de codificación de caracteres universal. • El Consorcio Unicode desarrolló el estándar Unicode en respuesta a los graves problemas creados por las diversas codificaciones de caracteres y por el uso de estas codificaciones. • El estándar Unicode facilita la producción y distribución de software localizado. Resume una especificación para producir la codificación consistente de los caracteres y símbolos de todo el mundo. • Los productos de software que manejan texto codificado en el estándar Unicode necesitan localizarse, pero este proceso es más simple y eficiente debido a que los valores numéricos no necesitan convertirse. • El estándar Unicode está diseñado para ser universal, eficiente, uniforme y sin ambigüedades.

Java-Apen-G 3/31/01 12:29 PM Page 1293

Unicode®

Apéndice G

1293

• Un sistema de codificación universal abarca todos los caracteres utilizados comúnmente; un sistema de codificación eficiente analiza los archivos de texto con facilidad; un sistema de codificación uniforme asigna valores fijos a todos los caracteres; y un sistema de codificación sin ambigüedades representa el mismo carácter para cualquier valor dado. • Unicode extiende el limitado conjunto de caracteres ASCII para incluir todos los principales caracteres utilizados en el mundo. • Unicode hace uso de tres Formatos de transformación Unicode (UTF): UTF-8, UTF-16 y UTF-32, cada uno de los cuales puede ser apropiado para usarse en distintos contextos. • Los datos de UTF-8 consisten en bytes de 8 bits (secuencias de uno, dos, tres o cuatro bytes, dependiendo del carácter que se vaya a codificar) y son bastante adecuados para los sistemas basados en ASCII, cuando predominan los caracteres de un byte (ASCII representa los caracteres como un byte). • UTF-8 es un formato de codificación de anchura variable que es más compacto para el texto en el que se utilizan principalmente caracteres latinos y signos de puntuación del código ASCII. • UTF-16 es el formato de codificación predeterminado del Estándar Unicode. Es un formato de codificación de anchura variable que utiliza unidades de código de 16 bits, en vez de bytes. La mayoría de los caracteres se representan mediante una sola unidad de 16 bits, pero algunos caracteres requieren pares de sustitutos. • Sin los pares de sustitutos, el formato de codificación UTF-16 puede abarcar solamente 65,000 caracteres, pero con los pares de sustitutos esta capacidad se expande para incluir más de un millón de caracteres. • UTF-32 es un formato de codificación de 32 bits. La principal ventaja del formato de codificación de anchura fija es que expresa uniformemente a todos los caracteres, por lo que es fácil manejarlos en arreglos y demás. • El estándar Unicode consiste de caracteres. Un carácter es cualquier componente escrito que pueda ser representado por un valor numérico. • Los caracteres se representan utilizando glifos, que son varias figuras, tipos de letra y tamaños para mostrar caracteres. • Los valores de códigos son combinaciones de bits que representan caracteres codificados. La notación de Unicode para un valor de código es U+yyyy, en donde U+ se refiere a los valores de código de Unicode, a diferencia de otros valores hexadecimales. Las letras yyyy representan un número hexadecimal de cuatro dígitos. • Actualmente, el estándar Unicode proporciona valores de código para 94,140 representaciones de caracteres. • Una ventaja del estándar Unicode es su impacto en el rendimiento total de la economía internacional. Las computadoras pueden procesar fácilmente a las aplicaciones que se conforman a un estándar de codificación. • Otra ventaja del estándar Unicode es su portabilidad. Las aplicaciones escritas en Unicode pueden transferirse fácilmente a distintos sistemas operativos, bases de datos, navegadores Web, etcétera. Hoy en día, la mayoría de las compañías cuentan con soporte, o están planeando tener soporte para, Unicode. • Para obtener más información acerca del estándar Unicode y del Consorcio Unicode, visite el sitio www.unicode.org. Este sitio contiene un vínculo hacia las tablas de código, las cuales contienen los valores de código de 16 bits para los caracteres que ya se encuentran codificados. • Muchos lenguajes de programación proporcionan cierto nivel de soporte para el Estándar Unicode. • En los programas de Java, la secuencia de escape \uyyyy representa un carácter, en donde yyyy es el valor de código hexadecimal de cuatro dígitos. La secuencia de escape \u0020 es la codificación universal para el carácter de espacio.

TERMINOLOGÍA \uyyyy, secuencia de escape ASCII base del diseño de Unicode bloque carácter codificar conjunto de caracteres conjunto de caracteres de doble byte (DBCS) conjunto de caracteres multibyte (MBCS) Consorcio Unicode

eficiente (base del diseño de Unicode) escritura Estándar Unicode Formato de transformación Unicode (UTF) glifo localización notación hexadecimal portabilidad secuencia de escape signo diacrítico símbolo

sin ambigüedades (base del diseño de Unicode) sustituto uniforme (base del diseño de Unicode) universal (base del diseño de Unicode) UTF-8 UTF-16 UTF-32 valor de código

Java-Apen-G 3/31/01 12:29 PM Page 1294

1294

Unicode®

Apéndice G

EJERCICIOS DE AUTOEVALUACIÓN G.1

Complete las siguientes oraciones. a) Los desarrolladores de software global tenían que sus productos para un mercado específico antes de distribuirlos. b) El estándar Unicode es un estándar de que facilita la producción y distribución uniforme de productos de software. c) Las cuatro bases de diseño que constituyen el Estándar Unicode son: , , y . d) Un es el componente escrito más pequeño que puede ser representado con un valor numérico. e) Se dice que el software que puede ejecutarse en distintos sistemas operativos es .

G.2

Conteste con verdadero o falso a cada una de las siguientes proposiciones; en caso de ser falso, explique por qué. a) El estándar Unicode abarca a los caracteres de todo el mundo. b) Un valor de código de Unicode se representa como U+yyyy, en donde yyyy representa un número en notación binaria. c) Un signo diacrítico es un carácter con una marca especial que enfatiza un acento. d) Unicode es portable. e) Al diseñar programas de Java, la secuencia de escape se denota mediante /uyyyy.

RESPUESTAS A LOS EJERCICIOS DE AUTOEVALUACIÓN G.1

a) Localizar. b) Codificación. c) Universal, eficiente, uniforme, sin ambigüedades. d) Carácter. e) Portable.

G.2

a) Falso. Abarca la mayor parte de los caracteres utilizados en el mundo. b) Falso. Las letras yyyy representan un número hexadecimal. c) Falso. Un signo diacrítico es una marca especial que se agrega a un carácter para diferenciarlo de otra letra, o para indicar un acento. d) Verdadero. e) Falso. La secuencia de escape se denota mediante \uyyyy.

EJERCICIOS G.3

Navegue en el sitio Web del Consorcio Unicode (www.unicode.org) y escriba los valores de código hexadecimales para los siguientes caracteres. ¿En qué bloque se encuentran localizados? a) La letra ‘Z’ del latín. b) La letra ‘n’ del latín con ‘tilde (~)’. c) La letra ‘delta’ del griego. d) El operador matemático ‘menor o igual que’. e) El símbolo de puntuación ‘comilla de apertura (“)’.

G.4

Describa la base del diseño del estándar Unicode.

G.5

Defina los siguientes términos: a) Valor de código. b) Sustitutos. c) Estándar Unicode.

G.6

Defina los siguientes términos: a) UTF-8. b) UTF-16. c) UTF-32.

G.7

Describa un escenario en donde sea óptimo almacenar sus datos en el formato UTF-16.

G.8

Utilizando los valores de código del estándar Unicode, escriba un programa de Java que imprima su nombre de pila y su apellido. El programa deberá imprimir todo su nombre en letras mayúsculas y en minúsculas. Si conoce otros lenguajes, imprima también su nombre de pila y apellido en esos lenguajes.

Get in touch

Social

© Copyright 2013 - 2024 MYDOKUMENT.COM - All rights reserved.