Vous êtes sur la page 1sur 4

Handout: Algoritmos e Tcnicas de Programao

Codificao de caracteres ASCII e UNICODE


Prof. Hugo de Paula

Este documento apresenta as principais formas de codificao de ca-


racteres utilizadas pelas linguagens de programao modernas, e seus
impactos na construo de algoritmos nessas linguagens. O material
de referencia pode ser obtido na bibliografia bsica em Deitel et al.
[2003, apend. F e G].

Codificao de caracteres

O tipo CHAR, representa o conjuntos dos caracteres que podem


ser representados em um computador. Como todo tipo de dados, o
tipo char possui um tamanho (em bytes) e uma forma de codifica-
o. Desta forma, um mesmo caractere pode possuir representaes
distintas, dependendo do sistema operacional, ou linguagem de pro-
gramao utilizada. Este documento ir apresentar as formas de
codificao ASCII e UNICODE 1 [Deitel et al., 2003, apend. F e G]. 1
Harvey M. Deitel, Paul J. Deitel, Jeff
Listfield, Tem R. Nieto, Cheryl Yaeger,
and Marina Zlatkina. C]: Como Progra-
A Tabela ASCII mar. Pearson Education, So Paulo, 1st
edition, 2003. ISBN 85-346-1459-8

A Tabela ASCII (American Standard Code for Information Interchange),


que em portugus significa Cdigo Padro Americano para o Inter-
cmbio de Informao, foi uma das primeiras formas de codificao
a serem utilizadas pela da indstria de computadores para a troca
de informaes. Cada caractere representado por um cdigo de 8
bits (um byte) 2 , sendo que a codificao utiliza 7 bits para definir 2
American Standards Association.
128 caracteres (27 ), enquanto o oitavo bit utilizado para paridade American standard code for informa-
tion interchange. Technical Report
(deteco de erro). Os primeiros 32 caracteres so especiais. Eles ASA X3.4-1963, American Standards
possuem um cdigo mas no so imprimveis. A tabela abaixo exibe Association, New York, NY, June 17
1963
estes caracteres especiais. A tabela a seguir apresenta os primeiros
32 bits da tabela ASCII. A coluna Decimal representa o nmero
inteiro correspondente codificao do caractere. O cdigo tambm
pode ser visto na base 16 (hexadecimal) e na base 2 (binrio).
PUC Minas Virtual handout: codificao de caracteres ascii e unicode 2

Caractere Decimal Hexadecimal Binrio Significado


NUL 00 00 0000 0000 Caractere Nulo
SOH 01 01 0000 0001 Comeo de cabealho de transmisso
STX 02 02 0000 0010 Comeo de texto
ETX 03 03 0000 0011 Fim de texto
EOT 04 04 0000 0100 Fim de transmisso
ENQ 05 05 0000 0101 Interroga
ACK 06 06 0000 0110 Confirmao
BEL 07 07 0000 0111 Sinal sonoro
BS 08 08 0000 0100 Volta um caractere
HT 09 09 0000 1001 Tabulao Horizontal
LF 10 0A 0000 1010 Prxima linha
VT 11 0B 0000 1011 Tabulao Vertical
FF 12 0C 0000 1100 Prxima Pgina
CR 13 0D 0000 1101 Incio da Linha
SO 14 0E 0000 1110 Shift-out
SI 15 0F 0000 1111 Shift-in
DLE 16 10 0001 0000 Data link escape
D1 17 11 0001 0001 Controle de dispositivo
D2 18 12 0001 0010 Controle de dispositivo
D3 19 13 0001 0011 Controle de dispositivo
D4 20 14 0001 0100 Controle de dispositivo
NAK 21 15 0001 0101 Negativa de Confirmao
SYN 22 16 0001 0110 Synchronous idle
ETB 23 17 0001 0111 Fim de transmisso de bloco
CAN 24 18 0001 1000 Cancela
EM 25 19 0001 1001 Fim de meio de transmisso
SUB 26 1A 0001 1010 Substitui
ESC 27 1B 0001 1011 Escape
FS 28 1C 0001 1100 Separador de Arquivo
GS 29 1D 0001 1101 Separador de Grupo
RS 30 1E 0001 1110 Separador de registro
US 31 1F 0001 1111 Separador de Unidade

ASCII Estendido e a norma ISO Latin-1


Entretanto, os 127 caracteres da tabela ASCII no eram suficientes
para representar caracteres com acentos e outros caracteres especiais
teis em lnguas latinas e europeias, em geral. Surgiram ento pa-
dronizaes chamadas ASCII estendido, ue utilizavam todos os oito
bits para codificar caracteres, resultando em uma tabela com 256 sm-
bolos diferentes. As principais variantes que dizem respeito ao Brasil
so a norma ISO 8859-1, tambm chamada ISO Latin-1, que contm
os caracteres estendidos do padro Microsoft Windows Latin-1. A
tabela completa do ISO Latin-1 pode ser vista em [Injosoft, 2011].
PUC Minas Virtual handout: codificao de caracteres ascii e unicode 3

UNICODE

A codificao ASCII possua limitaes, pois no era possvel se re-


presentar todos os caracteres de todas as lnguas do mundo com
apenas 256 smbolos. O UNICODE um padro de codificao que
utiliza 16 bits (2 bytes) para codificar um caractere especfico. Pela
sua definio, o UNICODE prove um nmero nico para todo ca-
ractere, no importa a plataforma, no importa o programa, no im-
porta a lngua. Com 16 bits, possvel se representar 21 6 = 65.536
smbolos diferentes, o que suficiente par representar todos os ca-
racteres do mundo, inclusive os caracteres gregos, cirilicos, rabes,
asiticos, etc 3 . 3
The Unicode Consortium, editor. The
As linguagens modernas como o C] e o Java utilizam a codificao Unicode Standard, Version 6.2.0. The Uni-
code Consortium, Mountain View, CA,
UNICODE para codificar suas variveis do tipo caractere. 2012. ISBN 978-1-936213-07-8

Exemplo em C]
O exemplo a seguir possui duas partes. Na parte 1 ser utilizado
o operador de converso (int) para exibir o cdigo inteiro de um
caractere especfico (adaptado de [Deitel et al., 2003, p. 79]) 4 . Na 4
Harvey M. Deitel, Paul J. Deitel, Jeff
segunda parte, o Console ir solicitar ao usurio que digite um ca- Listfield, Tem R. Nieto, Cheryl Yaeger,
and Marina Zlatkina. C]: Como Progra-
ractere qualquer e ir exibir o seu respectivo cdigo hexadecimal mar. Pearson Education, So Paulo, 1st
(adaptado de [Microsoft, 2013]) 5 . edition, 2003. ISBN 85-346-1459-8
5
Microsoft. Microsoft deve-
1 using System ;
loper network: Console.read
2 using System . C o l l e c t i o n s . Generic ;
method, 2013. URL http:
3 using System . Linq ;
//msdn.microsoft.com/en-us/
4 using System . Text ;
library/system.console.read.aspx
5 using System . Threading . Tasks ;
6
7 namespace ATP_02_ExemploChar
8 {
9 c l a s s Program
10 {
11 s t a t i c void Main ( s t r i n g [ ] a r g s )
12 {
13 char ch ;
14 int x ;
15
16 / / P a r t e 1 : E x i b i n d o c a r a c t e r e s e s e u s r e s p e c i t i v o s c o d i g o s em i n t e i r o
17

18 Console . WriteLine ( "O caractere " + A + " possui o valor inteiro " + ( i n t ) A ) ;
19 Console . WriteLine ( "O caractere " + a + " possui o valor inteiro " + ( int ) a ) ;
20 Console . WriteLine ( "O caractere " + 1 + " possui o valor inteiro " + ( int ) 1 ) ;
21 Console . WriteLine ( "O caractere " + 2 + " possui o valor inteiro " + ( int ) 2 ) ;
22

23 / / P a r t e 2 : Lendo d a d o s do t e c l a d o e e x i b i n d o sem c o d i g o h e x a d e c i m a l
24

25 Console . WriteLine ( " \ n D i g i t e um c a r a c t e r e e p r e s s i o n e E n t e r : \ n " ) ;


26 x = Console . Read ( ) ; / / Le um i n t e i r o da t e l a .
27

28 try
29 {
30 ch = Convert . ToChar ( x ) ;
31 i f ( Char . IsWhiteSpace ( ch ) ) / / V e r i f i c a s e e o e s p a c o em b r a n c o
32 Console . WriteLine ( " C a r a c t e r e e o hexadecimal 0x { 0 : x4 } . " , x ) ;
33 else
34 Console . WriteLine ( " C a r a c t e r e { 0 } e o hexadecimal 0x { 1 : x4 } . " , ch , x ) ;
35 }
36 c a t c h ( OverflowException e )
37 {
PUC Minas Virtual handout: codificao de caracteres ascii e unicode 4

38 Console . WriteLine ( " { 0 } Value read = { 1 } . " , e . Message , x ) ;


39 }
40

41 Console . ReadKey ( ) ; / / Aguarda o u s u a r i o p r e s s i o n a r uma t e c l a p a r a f e c h a r .


42 }
43 }
44 }

Ao executarmos o exemplo teremos, na primeira parte, a seguinte


impresso

O caractere A possui o valor inteiro 65


O caractere a possui o valor inteiro 97
O caractere 1 possui o valor inteiro 49
O caractere 2 possui o valor inteiro 50

Em seguida, ele ir solicitar o usurio que digite um caractere.


Se o usurio digitar o caractere a (minsculo), teremos a seguinte
sada:

Digite um caractere e pressione Enter:

a
Caractere a o hexadecimal 0x0061.

Referncias

American Standards Association. American standard code for in-


formation interchange. Technical Report ASA X3.4-1963, American
Standards Association, New York, NY, June 17 1963.

The Unicode Consortium, editor. The Unicode Standard, Version 6.2.0.


The Unicode Consortium, Mountain View, CA, 2012. ISBN 978-1-
936213-07-8.

Harvey M. Deitel, Paul J. Deitel, Jeff Listfield, Tem R. Nieto, Cheryl


Yaeger, and Marina Zlatkina. C]: Como Programar. Pearson Educa-
tion, So Paulo, 1st edition, 2003. ISBN 85-346-1459-8.

Injosoft. Ascii code - the extended ascii table, 2011. URL http:
//www.ascii-code.com/.

Microsoft. Microsoft developer network: Console.read method,


2013. URL http://msdn.microsoft.com/en-us/library/system.
console.read.aspx.

Vous aimerez peut-être aussi