Representación de la Información (III)

Representaci´on de la Informaci´on (III) Representaci´ on de Caracteres Maximiliano Geier 10/04/2015 Maximiliano Geier Representaci´ on de la Info
Author:  Josefa Ayala Soto

8 downloads 91 Views 552KB Size

Recommend Stories


La tragedia de Ricardo III
La tragedia de Ricardo III (The life and death of king Richard III) William Shakespeare http://www.poesiayprosa.com.ar 1 La tragedia de Ricardo II

III. EPIDEMIOLOGÍA. Ana Flisser. III.1. Notas de la historia. III.1.1. Mundo clásico
III. EPIDEMIOLOGÍA Ana Flisser III.1. Notas de la historia III.1.1. Mundo clásico Desde las antiguas culturas de Egipto y Grecia se consideraba que l

Story Transcript

Representaci´on de la Informaci´on (III) Representaci´ on de Caracteres

Maximiliano Geier

10/04/2015

Maximiliano Geier

Representaci´ on de la Informaci´ on (III)

10/04/2015

1 / 14

Representaci´ on de caracteres

Representaci´on de caracteres

La memoria contiene bits, ceros y unos dispuestos en alg´ un orden que se pueden interpretar de diferentes formas. Hasta ahora estuvimos viendo distintas maneras de representar n´ umeros. ¿C´omo hacemos para guardar en memoria la cadena de caracteres icb2015?

Maximiliano Geier

Representaci´ on de la Informaci´ on (III)

10/04/2015

2 / 14

Representaci´ on de caracteres

ASCII Respuesta 1: ASCII (American Standard for Information Interchange – 1963)

Maximiliano Geier

Representaci´ on de la Informaci´ on (III)

10/04/2015

3 / 14

Representaci´ on de caracteres

EBCDIC Respuesta 1 bis: EBCDIC (Extended Binary Coded Decimal Interchange Code – 1963, IBM)

Maximiliano Geier

Representaci´ on de la Informaci´ on (III)

10/04/2015

4 / 14

Representaci´ on de caracteres

EBCDIC Respuesta 1 bis: EBCDIC (Extended Binary Coded Decimal Interchange Code – 1963, IBM)

Problema: ¿y si quiero representar la cadena de caracteres Mar´ ıa Elena? Maximiliano Geier

Representaci´ on de la Informaci´ on (III)

10/04/2015

4 / 14

Representaci´ on de caracteres

ISO-8859-1 (Latin-1) Respuesta 2: Latin-1

Maximiliano Geier

Representaci´ on de la Informaci´ on (III)

10/04/2015

5 / 14

Representaci´ on de caracteres

ISO-8859-1 (Latin-1) Respuesta 2: Latin-1

¿Y ahora si quiero codificar 你什么名字? Maximiliano Geier

Representaci´ on de la Informaci´ on (III)

10/04/2015

5 / 14

Representaci´ on de caracteres

Unicode Para unificar la codificaci´ on de caracteres en todas las lenguas del mundo se defini´o un standard, llamado Unicode, que establece una numeraci´on uniforme para 113.021 caracteres (versi´on 7.0, Junio 2014) en 123 scripts diferentes

Maximiliano Geier

Representaci´ on de la Informaci´ on (III)

10/04/2015

6 / 14

Representaci´ on de caracteres

Unicode Para unificar la codificaci´ on de caracteres en todas las lenguas del mundo se defini´o un standard, llamado Unicode, que establece una numeraci´on uniforme para 113.021 caracteres (versi´on 7.0, Junio 2014) en 123 scripts diferentes A esta lista de caracteres se la conoce como UCS (Universal Character Set)

Maximiliano Geier

Representaci´ on de la Informaci´ on (III)

10/04/2015

6 / 14

Representaci´ on de caracteres

Unicode Para unificar la codificaci´ on de caracteres en todas las lenguas del mundo se defini´o un standard, llamado Unicode, que establece una numeraci´on uniforme para 113.021 caracteres (versi´on 7.0, Junio 2014) en 123 scripts diferentes A esta lista de caracteres se la conoce como UCS (Universal Character Set) ´ Algunos scripts incluidos: Arabe, Armenio, Bengal´ı, Bopomofo, Cir´ılico, Devanagari, Georgiano, Griego, Gujarati, Gurmukhi, Hangul, Hebreo, Hiragana, Kannada, Katakana, Lao, Lat´ın, Malayo, Oriya, Tamil, Telugu, Thai, Tibetano, CJK (chino, japon´es y coreano), S´anscrito v´edico, Javan´es, Khmer, Mongol, Tibetano, Braille, Runas, Klingon, etc.

Maximiliano Geier

Representaci´ on de la Informaci´ on (III)

10/04/2015

6 / 14

Representaci´ on de caracteres

Unicode Para unificar la codificaci´ on de caracteres en todas las lenguas del mundo se defini´o un standard, llamado Unicode, que establece una numeraci´on uniforme para 113.021 caracteres (versi´on 7.0, Junio 2014) en 123 scripts diferentes A esta lista de caracteres se la conoce como UCS (Universal Character Set) ´ Algunos scripts incluidos: Arabe, Armenio, Bengal´ı, Bopomofo, Cir´ılico, Devanagari, Georgiano, Griego, Gujarati, Gurmukhi, Hangul, Hebreo, Hiragana, Kannada, Katakana, Lao, Lat´ın, Malayo, Oriya, Tamil, Telugu, Thai, Tibetano, CJK (chino, japon´es y coreano), S´anscrito v´edico, Javan´es, Khmer, Mongol, Tibetano, Braille, Runas, Klingon, etc. Unicode establece el mapa de caracteres, pero no c´omo se codifican. ¿C´omo hacemos? Maximiliano Geier

Representaci´ on de la Informaci´ on (III)

10/04/2015

6 / 14

Representaci´ on de caracteres

UCS y UTF UCS define una manera de codificar los caracteres, utilizando el n´ umero del mismo en el mapa. Para esto necesitamos al menos 17 bits (217 = 131072). Las codificaciones de UCS son de longitud fija, se indica en el nombre la cantidad de bytes de la codificaci´ on.

Maximiliano Geier

Representaci´ on de la Informaci´ on (III)

10/04/2015

7 / 14

Representaci´ on de caracteres

UCS y UTF UCS define una manera de codificar los caracteres, utilizando el n´ umero del mismo en el mapa. Para esto necesitamos al menos 17 bits (217 = 131072). Las codificaciones de UCS son de longitud fija, se indica en el nombre la cantidad de bytes de la codificaci´ on. Inicialmente UCS-2, luego UCS-4.

Maximiliano Geier

Representaci´ on de la Informaci´ on (III)

10/04/2015

7 / 14

Representaci´ on de caracteres

UCS y UTF UCS define una manera de codificar los caracteres, utilizando el n´ umero del mismo en el mapa. Para esto necesitamos al menos 17 bits (217 = 131072). Las codificaciones de UCS son de longitud fija, se indica en el nombre la cantidad de bytes de la codificaci´ on. Inicialmente UCS-2, luego UCS-4. Problema: el texto “hola mundo” se codificar´ıa en UCS-4 como: 00 00 00 68 | 00 00 00 6F | 00 00 00 6C | 00 00 00 61 00 00 00 20 | 00 00 00 6D | 00 00 00 75 | 00 00 00 6E 00 00 00 64 | 00 00 00 6F Mientras que en ASCII la codificaci´ on es: 68 6F 6C 61 | 20 6D 75 6E | 64 6F

Maximiliano Geier

Representaci´ on de la Informaci´ on (III)

10/04/2015

7 / 14

Representaci´ on de caracteres

UCS y UTF UCS define una manera de codificar los caracteres, utilizando el n´ umero del mismo en el mapa. Para esto necesitamos al menos 17 bits (217 = 131072). Las codificaciones de UCS son de longitud fija, se indica en el nombre la cantidad de bytes de la codificaci´ on. Inicialmente UCS-2, luego UCS-4. Problema: el texto “hola mundo” se codificar´ıa en UCS-4 como: 00 00 00 68 | 00 00 00 6F | 00 00 00 6C | 00 00 00 61 00 00 00 20 | 00 00 00 6D | 00 00 00 75 | 00 00 00 6E 00 00 00 64 | 00 00 00 6F Mientras que en ASCII la codificaci´ on es: 68 6F 6C 61 | 20 6D 75 6E | 64 6F Soluci´ on: usar codificaciones de longitud variable (UTF = UCS Transformation Format) Maximiliano Geier

Representaci´ on de la Informaci´ on (III)

10/04/2015

7 / 14

Representaci´ on de caracteres

UTF UTF define diversos sistemas de transformaci´ on del c´ odigo de un caracter a su representaci´on en memoria. Para indicar el tipo, se suele utilizar un n´ umero que representa la cantidad de bits que tiene cada unidad de c´ odigo (code unit) del formato. Los formatos UTF m´as utilizados son UTF-32, UTF-16 y UTF-8.

Maximiliano Geier

Representaci´ on de la Informaci´ on (III)

10/04/2015

8 / 14

Representaci´ on de caracteres

UTF UTF define diversos sistemas de transformaci´ on del c´ odigo de un caracter a su representaci´on en memoria. Para indicar el tipo, se suele utilizar un n´ umero que representa la cantidad de bits que tiene cada unidad de c´ odigo (code unit) del formato. Los formatos UTF m´as utilizados son UTF-32, UTF-16 y UTF-8. UTF-32 equivalente a UCS-4.

Maximiliano Geier

Representaci´ on de la Informaci´ on (III)

10/04/2015

8 / 14

Representaci´ on de caracteres

UTF UTF define diversos sistemas de transformaci´ on del c´ odigo de un caracter a su representaci´on en memoria. Para indicar el tipo, se suele utilizar un n´ umero que representa la cantidad de bits que tiene cada unidad de c´ odigo (code unit) del formato. Los formatos UTF m´as utilizados son UTF-32, UTF-16 y UTF-8. UTF-32 equivalente a UCS-4. UTF-16 toma como base UCS-2, utiliza 2 code units de 16 bits para codificar caracteres cuyo c´ odigo tiene un valor superior a U+10000.

Maximiliano Geier

Representaci´ on de la Informaci´ on (III)

10/04/2015

8 / 14

Representaci´ on de caracteres

UTF UTF define diversos sistemas de transformaci´ on del c´ odigo de un caracter a su representaci´on en memoria. Para indicar el tipo, se suele utilizar un n´ umero que representa la cantidad de bits que tiene cada unidad de c´ odigo (code unit) del formato. Los formatos UTF m´as utilizados son UTF-32, UTF-16 y UTF-8. UTF-32 equivalente a UCS-4. UTF-16 toma como base UCS-2, utiliza 2 code units de 16 bits para codificar caracteres cuyo c´ odigo tiene un valor superior a U+10000. UTF-8 toma como base ASCII, codificaci´ on de longitud variable entre 1 y 4 code units de 8 bits.

Maximiliano Geier

Representaci´ on de la Informaci´ on (III)

10/04/2015

8 / 14

Representaci´ on de caracteres

Codificaci´on en UTF-8

En UTF-8 se utiliza la siguiente tabla para codificar caracteres Unicode: Bits 7 11 16 21

Inicio U+0000 U+0080 U+0800 U+10000

Fin U+007F U+07FF U+FFFF U+10FFFF

Byte 1 0xxxxxxx 110xxxxx 1110xxxx 11110xxx

Byte 2

Byte 3

Byte 4

10xxxxxx 10xxxxxx 10xxxxxx

10xxxxxx 10xxxxxx

10xxxxxx

Vamos a codificar el texto 名字, que corresponde a los caracteres Unicode U+540D U+5B571

1

http://www.fileformat.info/info/unicode/char/search.htm Maximiliano Geier

Representaci´ on de la Informaci´ on (III)

10/04/2015

9 / 14

Representaci´ on de caracteres

Codificaci´on en UTF-8 (cont.)

Primero escribimos ambos n´ umeros en binario: 540D = 0101 0100 0000 1101 5B57 = 0101 1011 0101 0111

Maximiliano Geier

Representaci´ on de la Informaci´ on (III)

10/04/2015

10 / 14

Representaci´ on de caracteres

Codificaci´on en UTF-8 (cont.)

Primero escribimos ambos n´ umeros en binario: 540D = 0101 0100 0000 1101 5B57 = 0101 1011 0101 0111 Como ocupan 15 bits, tenemos que usar la codificaci´ on de 3 bytes. La escribimos: 540D ⇒ 1110 0101 1001 0000 1000 1101 ⇒ E5 90 8D 5B57 ⇒ 1110 0101 1010 1101 1001 0111 ⇒ E5 AD 97

Maximiliano Geier

Representaci´ on de la Informaci´ on (III)

10/04/2015

10 / 14

Representaci´ on de caracteres

Decodificaci´on de UTF-8 Supongamos que tenemos la siguiente cadena de bytes y la queremos interpretar como UTF-8: 63 C3 B6 E4 BA 9C F0 9D 84 9E

Maximiliano Geier

Representaci´ on de la Informaci´ on (III)

10/04/2015

11 / 14

Representaci´ on de caracteres

Decodificaci´on de UTF-8 Supongamos que tenemos la siguiente cadena de bytes y la queremos interpretar como UTF-8: 63 C3 B6 E4 BA 9C F0 9D 84 9E 63, en binario 0110 0011 ⇒ U+0063

Maximiliano Geier

Representaci´ on de la Informaci´ on (III)

10/04/2015

11 / 14

Representaci´ on de caracteres

Decodificaci´on de UTF-8 Supongamos que tenemos la siguiente cadena de bytes y la queremos interpretar como UTF-8: 63 C3 B6 E4 BA 9C F0 9D 84 9E 63, en binario 0110 0011 ⇒ U+0063 C3, en binario 1100 0011.

Maximiliano Geier

Representaci´ on de la Informaci´ on (III)

10/04/2015

11 / 14

Representaci´ on de caracteres

Decodificaci´on de UTF-8 Supongamos que tenemos la siguiente cadena de bytes y la queremos interpretar como UTF-8: 63 C3 B6 E4 BA 9C F0 9D 84 9E 63, en binario 0110 0011 ⇒ U+0063 C3, en binario 1100 0011. Tenemos que leer 1 byte m´as.

Maximiliano Geier

Representaci´ on de la Informaci´ on (III)

10/04/2015

11 / 14

Representaci´ on de caracteres

Decodificaci´on de UTF-8 Supongamos que tenemos la siguiente cadena de bytes y la queremos interpretar como UTF-8: 63 C3 B6 E4 BA 9C F0 9D 84 9E 63, en binario 0110 0011 ⇒ U+0063 C3, en binario 1100 0011. Tenemos que leer 1 byte m´as. B6, en binario 1011 0110 ⇒ U+00F6

Maximiliano Geier

Representaci´ on de la Informaci´ on (III)

10/04/2015

11 / 14

Representaci´ on de caracteres

Decodificaci´on de UTF-8 Supongamos que tenemos la siguiente cadena de bytes y la queremos interpretar como UTF-8: 63 C3 B6 E4 BA 9C F0 9D 84 9E 63, en binario 0110 0011 ⇒ U+0063 C3, en binario 1100 0011. Tenemos que leer 1 byte m´as. B6, en binario 1011 0110 ⇒ U+00F6 E4, en binario 1110 0100. Tenemos que leer 2 bytes m´as.

Maximiliano Geier

Representaci´ on de la Informaci´ on (III)

10/04/2015

11 / 14

Representaci´ on de caracteres

Decodificaci´on de UTF-8 Supongamos que tenemos la siguiente cadena de bytes y la queremos interpretar como UTF-8: 63 C3 B6 E4 BA 9C F0 9D 84 9E 63, en binario 0110 0011 ⇒ U+0063 C3, en binario 1100 0011. Tenemos que leer 1 byte m´as. B6, en binario 1011 0110 ⇒ U+00F6 E4, en binario 1110 0100. Tenemos que leer 2 bytes m´as. BA 9C, en binario 1011 1010 1001 1100 ⇒ U+4E9C

Maximiliano Geier

Representaci´ on de la Informaci´ on (III)

10/04/2015

11 / 14

Representaci´ on de caracteres

Decodificaci´on de UTF-8 Supongamos que tenemos la siguiente cadena de bytes y la queremos interpretar como UTF-8: 63 C3 B6 E4 BA 9C F0 9D 84 9E 63, en binario 0110 0011 ⇒ U+0063 C3, en binario 1100 0011. Tenemos que leer 1 byte m´as. B6, en binario 1011 0110 ⇒ U+00F6 E4, en binario 1110 0100. Tenemos que leer 2 bytes m´as. BA 9C, en binario 1011 1010 1001 1100 ⇒ U+4E9C F0, en binario 1111 0000. Tenemos que leer 3 bytes m´as.

Maximiliano Geier

Representaci´ on de la Informaci´ on (III)

10/04/2015

11 / 14

Representaci´ on de caracteres

Decodificaci´on de UTF-8 Supongamos que tenemos la siguiente cadena de bytes y la queremos interpretar como UTF-8: 63 C3 B6 E4 BA 9C F0 9D 84 9E 63, en binario 0110 0011 ⇒ U+0063 C3, en binario 1100 0011. Tenemos que leer 1 byte m´as. B6, en binario 1011 0110 ⇒ U+00F6 E4, en binario 1110 0100. Tenemos que leer 2 bytes m´as. BA 9C, en binario 1011 1010 1001 1100 ⇒ U+4E9C F0, en binario 1111 0000. Tenemos que leer 3 bytes m´as. 9D 84 9E, en binario 1001 1101 1000 0100 1001 1110 ⇒ U+1D11E Maximiliano Geier

Representaci´ on de la Informaci´ on (III)

10/04/2015

11 / 14

Representaci´ on de caracteres

Buscando en la tablita Ahora que tenemos los caracteres en Unicode, hay que buscar en la tabla qu´e quieren decir. Nos qued´ o: U+0063 U+00F6 U+4E9C U+1D11E

Maximiliano Geier

Representaci´ on de la Informaci´ on (III)

10/04/2015

12 / 14

Representaci´ on de caracteres

Buscando en la tablita Ahora que tenemos los caracteres en Unicode, hay que buscar en la tabla qu´e quieren decir. Nos qued´ o: U+0063 U+00F6 U+4E9C U+1D11E Una p´agina que permite buscar caracteres f´acilmente teniendo el code point es http://codepoints.net/ U+0063 LATIN SMALL LETTER C U+00F6 LATIN SMALL LETTER O WITH DIAERESIS U+4E9C CJK UNIFIED IDEOGRAPH-4E9C U+1D11E MUSICAL SYMBOL G CLEF

Maximiliano Geier

Representaci´ on de la Informaci´ on (III)

10/04/2015

12 / 14

Representaci´ on de caracteres

Buscando en la tablita Ahora que tenemos los caracteres en Unicode, hay que buscar en la tabla qu´e quieren decir. Nos qued´ o: U+0063 U+00F6 U+4E9C U+1D11E Una p´agina que permite buscar caracteres f´acilmente teniendo el code point es http://codepoints.net/ U+0063 LATIN SMALL LETTER C U+00F6 LATIN SMALL LETTER O WITH DIAERESIS U+4E9C CJK UNIFIED IDEOGRAPH-4E9C U+1D11E MUSICAL SYMBOL G CLEF El texto final es: c¨o亜 Maximiliano Geier

Representaci´ on de la Informaci´ on (III)

10/04/2015

12 / 14

Representaci´ on de caracteres

Unicode en la vida computacional El uso m´as preponderante de UTF-8 se encuentra en la web. En Marzo de 2015, el 83,3 % de las p´aginas web se encontraban codificadas en UTF-8. A pesar de esto, todav´ıa hay ocasiones en las que la codificaci´on de un texto no queda claro cu´al es. UTF-32 se utiliza para guardar cadenas de caracteres en memoria, UTF-8 para almacenar y transferir por Internet (en Windows se usa UTF-16 tambi´en).

Maximiliano Geier

Representaci´ on de la Informaci´ on (III)

10/04/2015

13 / 14

Representaci´ on de caracteres

Terminando: Unicode en Python En Python 3, todas las cadenas de caracteres se representan internamente en Unicode (¡no es el caso en Python 2!). Los nombres de las variables pueden tener caracteres raros (poco recomendable), siempre y cuando el archivo .py se encuentre guardado utilizando la codificaci´ on UTF-8. >>> a~ no = 2015 >>> print(a~ no) 2015

Maximiliano Geier

Representaci´ on de la Informaci´ on (III)

10/04/2015

14 / 14

Representaci´ on de caracteres

Terminando: Unicode en Python En Python 3, todas las cadenas de caracteres se representan internamente en Unicode (¡no es el caso en Python 2!). Los nombres de las variables pueden tener caracteres raros (poco recomendable), siempre y cuando el archivo .py se encuentre guardado utilizando la codificaci´ on UTF-8. >>> a~ no = 2015 >>> print(a~ no) 2015 Podemos escribir caracteres con su correspondiente c´ odigo Unicode utilizando la siguiente notaci´ on: >>> print(’\u4E9C’) 亜

Maximiliano Geier

Representaci´ on de la Informaci´ on (III)

10/04/2015

14 / 14

Representaci´ on de caracteres

Terminando: Unicode en Python En Python 3, todas las cadenas de caracteres se representan internamente en Unicode (¡no es el caso en Python 2!). Los nombres de las variables pueden tener caracteres raros (poco recomendable), siempre y cuando el archivo .py se encuentre guardado utilizando la codificaci´ on UTF-8. >>> a~ no = 2015 >>> print(a~ no) 2015 Podemos escribir caracteres con su correspondiente c´ odigo Unicode utilizando la siguiente notaci´ on: >>> print(’\u4E9C’) 亜 Tambi´en podemos interpretar una cadena de bytes como UTF-8: >>> print(b’\x63\xC3\xB6\xE4\xBA\x9C’.decode(’utf-8’)) c¨ o亜 Maximiliano Geier

Representaci´ on de la Informaci´ on (III)

10/04/2015

14 / 14

Get in touch

Social

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