Minicurso de Encoding - resolvendo problemas com acentuação (#TDC2012 Goiânia)
-
Upload
andre-willik-valenti -
Category
Technology
-
view
6.621 -
download
1
description
Transcript of Minicurso de Encoding - resolvendo problemas com acentuação (#TDC2012 Goiânia)
![Page 1: Minicurso de Encoding - resolvendo problemas com acentuação (#TDC2012 Goiânia)](https://reader033.fdocuments.in/reader033/viewer/2022061206/5482a312b07959420c8b4859/html5/thumbnails/1.jpg)
Minicurso de Encoding
André Willik Valenti (Daitan Group)Andrei Tognolo (Dextra Sistemas)
The Developer’s ConferenceGoiânia 2012
![Page 2: Minicurso de Encoding - resolvendo problemas com acentuação (#TDC2012 Goiânia)](https://reader033.fdocuments.in/reader033/viewer/2022061206/5482a312b07959420c8b4859/html5/thumbnails/2.jpg)
Roteiro▒ Parte 1
▒ O que é e por que existe
▒ Parte 2▒ Como funciona▒ Por que dá errado
▒ Parte 3▒ Como faz pra dar certo
![Page 3: Minicurso de Encoding - resolvendo problemas com acentuação (#TDC2012 Goiânia)](https://reader033.fdocuments.in/reader033/viewer/2022061206/5482a312b07959420c8b4859/html5/thumbnails/3.jpg)
Parte 1
O que é e por que existe
![Page 4: Minicurso de Encoding - resolvendo problemas com acentuação (#TDC2012 Goiânia)](https://reader033.fdocuments.in/reader033/viewer/2022061206/5482a312b07959420c8b4859/html5/thumbnails/4.jpg)
Quem é o encoding?▒ O encoding é o culpado por:
▒ Programação Programação Programa褯
▒ José Luís Assunção Júnior José Luà s Assunção Júnior Jos題 uAssun 褯 Jr
![Page 5: Minicurso de Encoding - resolvendo problemas com acentuação (#TDC2012 Goiânia)](https://reader033.fdocuments.in/reader033/viewer/2022061206/5482a312b07959420c8b4859/html5/thumbnails/5.jpg)
Quem é o encoding?▒ Mais especificamente:
▒ Character encoding
▒ Também conhecido como:▒ Codificação de caracteres▒ Charset
![Page 6: Minicurso de Encoding - resolvendo problemas com acentuação (#TDC2012 Goiânia)](https://reader033.fdocuments.in/reader033/viewer/2022061206/5482a312b07959420c8b4859/html5/thumbnails/6.jpg)
Por que encoding?▒ Se dá tanto problema...
▒ Por que a gente usa?
![Page 7: Minicurso de Encoding - resolvendo problemas com acentuação (#TDC2012 Goiânia)](https://reader033.fdocuments.in/reader033/viewer/2022061206/5482a312b07959420c8b4859/html5/thumbnails/7.jpg)
Por que encoding?▒ Computador é uma máquina de armazenar e processar informação
▒ Informação é um conceito abstrato
▒ Computador não entende conceitos abstratos
▒ Computador entende de bits, bytes, números
![Page 8: Minicurso de Encoding - resolvendo problemas com acentuação (#TDC2012 Goiânia)](https://reader033.fdocuments.in/reader033/viewer/2022061206/5482a312b07959420c8b4859/html5/thumbnails/8.jpg)
Por que encoding?▒ Exemplo: imagens
![Page 9: Minicurso de Encoding - resolvendo problemas com acentuação (#TDC2012 Goiânia)](https://reader033.fdocuments.in/reader033/viewer/2022061206/5482a312b07959420c8b4859/html5/thumbnails/9.jpg)
![Page 10: Minicurso de Encoding - resolvendo problemas com acentuação (#TDC2012 Goiânia)](https://reader033.fdocuments.in/reader033/viewer/2022061206/5482a312b07959420c8b4859/html5/thumbnails/10.jpg)
![Page 11: Minicurso de Encoding - resolvendo problemas com acentuação (#TDC2012 Goiânia)](https://reader033.fdocuments.in/reader033/viewer/2022061206/5482a312b07959420c8b4859/html5/thumbnails/11.jpg)
![Page 12: Minicurso de Encoding - resolvendo problemas com acentuação (#TDC2012 Goiânia)](https://reader033.fdocuments.in/reader033/viewer/2022061206/5482a312b07959420c8b4859/html5/thumbnails/12.jpg)
Por que encoding?▒ Como a gente representa uma imagem num computador?▒ Imagem pixels▒ pixels números▒ números bytes/bits▒ bytes/bits algum formato
(png, jpeg, gif etc.)
![Page 13: Minicurso de Encoding - resolvendo problemas com acentuação (#TDC2012 Goiânia)](https://reader033.fdocuments.in/reader033/viewer/2022061206/5482a312b07959420c8b4859/html5/thumbnails/13.jpg)
PNG
100011000100100100...
(440KB)
00110001011...
(62KB)
JPEG
![Page 14: Minicurso de Encoding - resolvendo problemas com acentuação (#TDC2012 Goiânia)](https://reader033.fdocuments.in/reader033/viewer/2022061206/5482a312b07959420c8b4859/html5/thumbnails/14.jpg)
Por que encoding?▒ A imagem é uma informação
▒ Bytes / bits são dados
▒ Dados são concretos, informação é abstrata
▒ Informação = dados + forma de interpretá-los
![Page 15: Minicurso de Encoding - resolvendo problemas com acentuação (#TDC2012 Goiânia)](https://reader033.fdocuments.in/reader033/viewer/2022061206/5482a312b07959420c8b4859/html5/thumbnails/15.jpg)
Informação=
dados + formade interpretá-los
![Page 16: Minicurso de Encoding - resolvendo problemas com acentuação (#TDC2012 Goiânia)](https://reader033.fdocuments.in/reader033/viewer/2022061206/5482a312b07959420c8b4859/html5/thumbnails/16.jpg)
Encoding▒ “Forma de interpretá-los”
▒ Isso é o encoding!
![Page 17: Minicurso de Encoding - resolvendo problemas com acentuação (#TDC2012 Goiânia)](https://reader033.fdocuments.in/reader033/viewer/2022061206/5482a312b07959420c8b4859/html5/thumbnails/17.jpg)
Encoding▒ Exemplos de encoding:
▒ PNG▒ JPEG▒ MPEG▒ MP3▒ PDF
![Page 18: Minicurso de Encoding - resolvendo problemas com acentuação (#TDC2012 Goiânia)](https://reader033.fdocuments.in/reader033/viewer/2022061206/5482a312b07959420c8b4859/html5/thumbnails/18.jpg)
Character encoding▒ O que é então um character encoding?▒ É só uma determinada maneira de se representar caracteres usando bytes
![Page 19: Minicurso de Encoding - resolvendo problemas com acentuação (#TDC2012 Goiânia)](https://reader033.fdocuments.in/reader033/viewer/2022061206/5482a312b07959420c8b4859/html5/thumbnails/19.jpg)
Encoding▒ Por que a gente usa encoding, então?▒ Porque não tem como não usar!
![Page 20: Minicurso de Encoding - resolvendo problemas com acentuação (#TDC2012 Goiânia)](https://reader033.fdocuments.in/reader033/viewer/2022061206/5482a312b07959420c8b4859/html5/thumbnails/20.jpg)
Parte 2
Como (não) funciona
Por que dá errado
![Page 21: Minicurso de Encoding - resolvendo problemas com acentuação (#TDC2012 Goiânia)](https://reader033.fdocuments.in/reader033/viewer/2022061206/5482a312b07959420c8b4859/html5/thumbnails/21.jpg)
História▒ Década de 60
▒ Mais de 60 maneiras diferentes de representar caracteres
▒ Cada fabricante implementava do seu jeito
▒ Bob Bemer:▒ “Vamos uniformizar esse negócio...”
![Page 22: Minicurso de Encoding - resolvendo problemas com acentuação (#TDC2012 Goiânia)](https://reader033.fdocuments.in/reader033/viewer/2022061206/5482a312b07959420c8b4859/html5/thumbnails/22.jpg)
![Page 23: Minicurso de Encoding - resolvendo problemas com acentuação (#TDC2012 Goiânia)](https://reader033.fdocuments.in/reader033/viewer/2022061206/5482a312b07959420c8b4859/html5/thumbnails/23.jpg)
ASCII▒ American Standard Code for Information Interchange
▒ 7 bits
▒ 128 diferentes caracteres
![Page 24: Minicurso de Encoding - resolvendo problemas com acentuação (#TDC2012 Goiânia)](https://reader033.fdocuments.in/reader033/viewer/2022061206/5482a312b07959420c8b4859/html5/thumbnails/24.jpg)
ASCII▒ ASCII é, ao mesmo tempo:
▒ Um encoding▒ Uma tabela de caracteres
![Page 25: Minicurso de Encoding - resolvendo problemas com acentuação (#TDC2012 Goiânia)](https://reader033.fdocuments.in/reader033/viewer/2022061206/5482a312b07959420c8b4859/html5/thumbnails/25.jpg)
ASCII▒ Exemplos:
Caractere Decimal Hexa Binário
5 53 0x35 0110101
A 65 0x41 1000001
} 125 0x7D 1111101
![Page 26: Minicurso de Encoding - resolvendo problemas com acentuação (#TDC2012 Goiânia)](https://reader033.fdocuments.in/reader033/viewer/2022061206/5482a312b07959420c8b4859/html5/thumbnails/26.jpg)
ASCII▒ 128 caracteres (nenhum acentuado)
▒ Intervalo válido▒ Em decimal: 0 – 127▒ Em binário: 0000000 – 1111111▒ Em hexadecimal: 0x00 – 0x7F
![Page 27: Minicurso de Encoding - resolvendo problemas com acentuação (#TDC2012 Goiânia)](https://reader033.fdocuments.in/reader033/viewer/2022061206/5482a312b07959420c8b4859/html5/thumbnails/27.jpg)
ASCII▒ 7 bits?
▒ Muitas máquinas usavam/usam o padrão de 8 bits para 1 byte
▒ E esse bit sobrando aí?▒ “Já sei... Vamos usar pra codificar caracteres locais de cada país!”
![Page 28: Minicurso de Encoding - resolvendo problemas com acentuação (#TDC2012 Goiânia)](https://reader033.fdocuments.in/reader033/viewer/2022061206/5482a312b07959420c8b4859/html5/thumbnails/28.jpg)
ASCII estendido▒ 8 bits: 256 caracteres
▒ Intervalo válido:▒ 0 – 255 (em decimal)▒ 0x00 – 0xFF (em hexadecimal)
![Page 29: Minicurso de Encoding - resolvendo problemas com acentuação (#TDC2012 Goiânia)](https://reader033.fdocuments.in/reader033/viewer/2022061206/5482a312b07959420c8b4859/html5/thumbnails/29.jpg)
ASCII estendido▒ 0x00 – 0x7F: igual ASCII
▒ a b C D 3 5 9 % & /
▒ 0x80 – 0xFF: caracteres locais▒ ç Á ã é ü ¿
![Page 30: Minicurso de Encoding - resolvendo problemas com acentuação (#TDC2012 Goiânia)](https://reader033.fdocuments.in/reader033/viewer/2022061206/5482a312b07959420c8b4859/html5/thumbnails/30.jpg)
0x80 0x81 0x82 ... 0xFF
ASCII original
ASCII estendido
0x00 0x01 0x02 ... 0x7F
![Page 31: Minicurso de Encoding - resolvendo problemas com acentuação (#TDC2012 Goiânia)](https://reader033.fdocuments.in/reader033/viewer/2022061206/5482a312b07959420c8b4859/html5/thumbnails/31.jpg)
ASCII estendido▒ Problema:
▒ Não existe “o encoding ASCII estendido”
▒ Existem UM MONTE de encodings que são “ASCII estendido”
![Page 32: Minicurso de Encoding - resolvendo problemas com acentuação (#TDC2012 Goiânia)](https://reader033.fdocuments.in/reader033/viewer/2022061206/5482a312b07959420c8b4859/html5/thumbnails/32.jpg)
ASCIIs estendidos▒ Codepages
▒ 437 — The original IBM PC code page▒ 720 — Arabic▒ 737 — Greek▒ 775 — Estonian, Lithuanian and Latvian▒ 850 — "Multilingual (Latin-1)"▒ 852 — "Slavic (Latin-2)"▒ 855 — Cyrillic▒ 857 — Turkish▒ 858 — "Multilingual" with euro symbol▒ 860 — Portuguese▒ 863 — French (Quebec French) ▒ 865 — Danish/Norwegian▒ 866 — Cyrillic ▒ 869 — Greek ▒ 874 — Thai▒ ...
![Page 33: Minicurso de Encoding - resolvendo problemas com acentuação (#TDC2012 Goiânia)](https://reader033.fdocuments.in/reader033/viewer/2022061206/5482a312b07959420c8b4859/html5/thumbnails/33.jpg)
ASCIIs estendidos▒ ISO-8859-1
▒ Também conhecido como LATIN-1
▒ É um ASCII estendido:▒ 256 caracteres▒ Compatível com ASCII
▒ Usado até hoje
![Page 34: Minicurso de Encoding - resolvendo problemas com acentuação (#TDC2012 Goiânia)](https://reader033.fdocuments.in/reader033/viewer/2022061206/5482a312b07959420c8b4859/html5/thumbnails/34.jpg)
ASCIIs estendidos▒ Maravilha!
▒ Milhares de encodings diferentes
▒ Agora todo mundo vai conseguir representar seus caracteres!
![Page 35: Minicurso de Encoding - resolvendo problemas com acentuação (#TDC2012 Goiânia)](https://reader033.fdocuments.in/reader033/viewer/2022061206/5482a312b07959420c8b4859/html5/thumbnails/35.jpg)
ASCIIs estendidos▒ E a interoperabilidade?
▒ Internet, internacionalização?▒ Troca de textos, documentos?▒ Nomes de arquivos?
![Page 36: Minicurso de Encoding - resolvendo problemas com acentuação (#TDC2012 Goiânia)](https://reader033.fdocuments.in/reader033/viewer/2022061206/5482a312b07959420c8b4859/html5/thumbnails/36.jpg)
Júnior.txt
![Page 37: Minicurso de Encoding - resolvendo problemas com acentuação (#TDC2012 Goiânia)](https://reader033.fdocuments.in/reader033/viewer/2022061206/5482a312b07959420c8b4859/html5/thumbnails/37.jpg)
![Page 38: Minicurso de Encoding - resolvendo problemas com acentuação (#TDC2012 Goiânia)](https://reader033.fdocuments.in/reader033/viewer/2022061206/5482a312b07959420c8b4859/html5/thumbnails/38.jpg)
Olá, meu nome é José Luàs de
Assunção Júnior, sou irmão da SÃ
lvia, da Cláudia e do João.
![Page 39: Minicurso de Encoding - resolvendo problemas com acentuação (#TDC2012 Goiânia)](https://reader033.fdocuments.in/reader033/viewer/2022061206/5482a312b07959420c8b4859/html5/thumbnails/39.jpg)
![Page 40: Minicurso de Encoding - resolvendo problemas com acentuação (#TDC2012 Goiânia)](https://reader033.fdocuments.in/reader033/viewer/2022061206/5482a312b07959420c8b4859/html5/thumbnails/40.jpg)
ASCII▒ No fim das contas, ficou assim:
![Page 41: Minicurso de Encoding - resolvendo problemas com acentuação (#TDC2012 Goiânia)](https://reader033.fdocuments.in/reader033/viewer/2022061206/5482a312b07959420c8b4859/html5/thumbnails/41.jpg)
ASCII▒ Na teoria:
▒ ASCII original: 0x00 – 0x7F
▒ Extensão do ASCII: 0x80 – 0xFF
![Page 42: Minicurso de Encoding - resolvendo problemas com acentuação (#TDC2012 Goiânia)](https://reader033.fdocuments.in/reader033/viewer/2022061206/5482a312b07959420c8b4859/html5/thumbnails/42.jpg)
ASCII▒ Na prática:
▒ ASCII original: Blz!
▒ Extensão do ASCII: Esquece!
![Page 43: Minicurso de Encoding - resolvendo problemas com acentuação (#TDC2012 Goiânia)](https://reader033.fdocuments.in/reader033/viewer/2022061206/5482a312b07959420c8b4859/html5/thumbnails/43.jpg)
Exemplo▒ Você, aqui no Brasil, usando o DOS, gostaria de dar o seu olá
▒ Você escreve:▒ Ola!
▒ No Brasil, a gente usava o encoding chamado “Codepage 850” (ou CP850)
![Page 44: Minicurso de Encoding - resolvendo problemas com acentuação (#TDC2012 Goiânia)](https://reader033.fdocuments.in/reader033/viewer/2022061206/5482a312b07959420c8b4859/html5/thumbnails/44.jpg)
Exemplo▒ Essa sua sequência de 4 caracteres (“Ola!”) é uma informação
▒ Informação só existe na cabeça dos seres humanos
▒ Computador não conhece informação. Computador conhece dados.
![Page 45: Minicurso de Encoding - resolvendo problemas com acentuação (#TDC2012 Goiânia)](https://reader033.fdocuments.in/reader033/viewer/2022061206/5482a312b07959420c8b4859/html5/thumbnails/45.jpg)
Exemplo▒ Para um computador, não existe:
▒ Ola!
▒ O que existe são estes 4 bytes:▒ 0x4F 0x6C 0x61 0x21
▒ Resultado:
![Page 46: Minicurso de Encoding - resolvendo problemas com acentuação (#TDC2012 Goiânia)](https://reader033.fdocuments.in/reader033/viewer/2022061206/5482a312b07959420c8b4859/html5/thumbnails/46.jpg)
Exemplo▒ Blz !
▒ O l a !▒ ↑ ↑ ↑ ↑▒ 0x4F 0x6C 0x61 0x21
![Page 47: Minicurso de Encoding - resolvendo problemas com acentuação (#TDC2012 Goiânia)](https://reader033.fdocuments.in/reader033/viewer/2022061206/5482a312b07959420c8b4859/html5/thumbnails/47.jpg)
Exemplo▒ Mensagem foi codificada em CP850
▒ Todos os caracteres eram ASCII também
▒ Na prática:▒ A mensagem está em ASCII▒ Todo computador entende ASCII▒ Então blz!
![Page 48: Minicurso de Encoding - resolvendo problemas com acentuação (#TDC2012 Goiânia)](https://reader033.fdocuments.in/reader033/viewer/2022061206/5482a312b07959420c8b4859/html5/thumbnails/48.jpg)
Exemplo▒ E se a gente escrever...
▒ Olá!
▒ Resultado:
![Page 49: Minicurso de Encoding - resolvendo problemas com acentuação (#TDC2012 Goiânia)](https://reader033.fdocuments.in/reader033/viewer/2022061206/5482a312b07959420c8b4859/html5/thumbnails/49.jpg)
Exemplo▒ Blz !
▒ O l á !▒ ↑ ↑ ↑ ↑▒ 0x4F 0x6C 0xE1 0x21
▒ (Usando codepage 850)
![Page 50: Minicurso de Encoding - resolvendo problemas com acentuação (#TDC2012 Goiânia)](https://reader033.fdocuments.in/reader033/viewer/2022061206/5482a312b07959420c8b4859/html5/thumbnails/50.jpg)
Exemplo▒ Até você tentar ler isso num computador russo e...
![Page 51: Minicurso de Encoding - resolvendo problemas com acentuação (#TDC2012 Goiânia)](https://reader033.fdocuments.in/reader033/viewer/2022061206/5482a312b07959420c8b4859/html5/thumbnails/51.jpg)
Exemplo▒ Não blz
▒ O l р !▒ ↑ ↑ ↑ ↑▒ 0x4F 0x6C 0xE1 0x21
![Page 52: Minicurso de Encoding - resolvendo problemas com acentuação (#TDC2012 Goiânia)](https://reader033.fdocuments.in/reader033/viewer/2022061206/5482a312b07959420c8b4859/html5/thumbnails/52.jpg)
Exemplo▒ Encoding russo disse:
▒ 0xE1 é um р
▒ Encoding brasileiro tinha dito:▒ 0xE1 é um á
▒ Quem está certo?
![Page 53: Minicurso de Encoding - resolvendo problemas com acentuação (#TDC2012 Goiânia)](https://reader033.fdocuments.in/reader033/viewer/2022061206/5482a312b07959420c8b4859/html5/thumbnails/53.jpg)
![Page 54: Minicurso de Encoding - resolvendo problemas com acentuação (#TDC2012 Goiânia)](https://reader033.fdocuments.in/reader033/viewer/2022061206/5482a312b07959420c8b4859/html5/thumbnails/54.jpg)
Encodings▒ Não existe uma forma única de representar o caractere á
▒ A sequência de bytes é ambígua:▒ 0x4F 0x6C 0xE1 0x21
![Page 55: Minicurso de Encoding - resolvendo problemas com acentuação (#TDC2012 Goiânia)](https://reader033.fdocuments.in/reader033/viewer/2022061206/5482a312b07959420c8b4859/html5/thumbnails/55.jpg)
Encodings▒ E se tivesse um jeito...
▒ ...de informar ao computador russo que a gente usou o CP850?
▒ Segure essa ideia!
![Page 56: Minicurso de Encoding - resolvendo problemas com acentuação (#TDC2012 Goiânia)](https://reader033.fdocuments.in/reader033/viewer/2022061206/5482a312b07959420c8b4859/html5/thumbnails/56.jpg)
Encodings▒ O mundo inteiro...
▒ ...cada um com o seu encoding?
▒ É óbvio que não daria certo▒ Teria que uniformizar de verdade!
![Page 57: Minicurso de Encoding - resolvendo problemas com acentuação (#TDC2012 Goiânia)](https://reader033.fdocuments.in/reader033/viewer/2022061206/5482a312b07959420c8b4859/html5/thumbnails/57.jpg)
Encodings▒ E se houvesse...
▒ Um código...▒ Um código único...▒ Um único código...▒ Um...
![Page 58: Minicurso de Encoding - resolvendo problemas com acentuação (#TDC2012 Goiânia)](https://reader033.fdocuments.in/reader033/viewer/2022061206/5482a312b07959420c8b4859/html5/thumbnails/58.jpg)
UNICODE!!
![Page 59: Minicurso de Encoding - resolvendo problemas com acentuação (#TDC2012 Goiânia)](https://reader033.fdocuments.in/reader033/viewer/2022061206/5482a312b07959420c8b4859/html5/thumbnails/59.jpg)
Unicode▒ O que é Unicode?
![Page 60: Minicurso de Encoding - resolvendo problemas com acentuação (#TDC2012 Goiânia)](https://reader033.fdocuments.in/reader033/viewer/2022061206/5482a312b07959420c8b4859/html5/thumbnails/60.jpg)
![Page 61: Minicurso de Encoding - resolvendo problemas com acentuação (#TDC2012 Goiânia)](https://reader033.fdocuments.in/reader033/viewer/2022061206/5482a312b07959420c8b4859/html5/thumbnails/61.jpg)
The Unicode 5.0 Standard
▒ 1472 páginas▒ É grande
![Page 62: Minicurso de Encoding - resolvendo problemas com acentuação (#TDC2012 Goiânia)](https://reader033.fdocuments.in/reader033/viewer/2022061206/5482a312b07959420c8b4859/html5/thumbnails/62.jpg)
O que é Unicode?▒ Unicode é:
▒ Um padrão gigantesco▒ Subdividido em muitas partes
▒ Unicode, ao contrário do ASCII:▒ Não É uma tabela de caracteres▒ Não É um encoding
![Page 63: Minicurso de Encoding - resolvendo problemas com acentuação (#TDC2012 Goiânia)](https://reader033.fdocuments.in/reader033/viewer/2022061206/5482a312b07959420c8b4859/html5/thumbnails/63.jpg)
O que é Unicode?▒ Unicode TEM uma tabela de caracteres:▒ UCS: Universal Character Set
▒ Unicode TEM diversos encodings▒ UTF-8, UTF-16, UTF-32 (Unicode Transformation Format)
![Page 64: Minicurso de Encoding - resolvendo problemas com acentuação (#TDC2012 Goiânia)](https://reader033.fdocuments.in/reader033/viewer/2022061206/5482a312b07959420c8b4859/html5/thumbnails/64.jpg)
UCS▒ Tabela gigante de caracteres (~100.000)
▒ Cada caractere possui um código, chamado code point▒ Code point é representado por U+ e um número em hexadecimal
![Page 65: Minicurso de Encoding - resolvendo problemas com acentuação (#TDC2012 Goiânia)](https://reader033.fdocuments.in/reader033/viewer/2022061206/5482a312b07959420c8b4859/html5/thumbnails/65.jpg)
UCS▒ Exemplos:
▒ U+0058: X▒ U+00E3: ã▒ U+2603: ☃▒ U+10123:
![Page 66: Minicurso de Encoding - resolvendo problemas com acentuação (#TDC2012 Goiânia)](https://reader033.fdocuments.in/reader033/viewer/2022061206/5482a312b07959420c8b4859/html5/thumbnails/66.jpg)
UCS▒ Intervalo U+0000 – U+007F
▒ Mesmos caracteres da tabela ASCII
![Page 67: Minicurso de Encoding - resolvendo problemas com acentuação (#TDC2012 Goiânia)](https://reader033.fdocuments.in/reader033/viewer/2022061206/5482a312b07959420c8b4859/html5/thumbnails/67.jpg)
UCS▒ Caracteres na tabela são abstratos (são informação)
▒ Para concretizá-los, é necessário um encoding
![Page 68: Minicurso de Encoding - resolvendo problemas com acentuação (#TDC2012 Goiânia)](https://reader033.fdocuments.in/reader033/viewer/2022061206/5482a312b07959420c8b4859/html5/thumbnails/68.jpg)
Encodings Unicode▒ Maneiras de transformar caracteres abstratos em concretos
▒ Três principais: UTF-8, UTF-16, UTF-32
![Page 69: Minicurso de Encoding - resolvendo problemas com acentuação (#TDC2012 Goiânia)](https://reader033.fdocuments.in/reader033/viewer/2022061206/5482a312b07959420c8b4859/html5/thumbnails/69.jpg)
UTF-32▒ Exemplos:
▒ U+0058: 0x00 0x00 0x00 0x58▒ U+00E3: 0x00 0x00 0x00 0xE3▒ U+2603: 0x00 0x00 0x26 0x03▒ U+10123: 0x00 0x01 0x01 0x23
![Page 70: Minicurso de Encoding - resolvendo problemas com acentuação (#TDC2012 Goiânia)](https://reader033.fdocuments.in/reader033/viewer/2022061206/5482a312b07959420c8b4859/html5/thumbnails/70.jpg)
UTF-16▒ Exemplos:
▒ U+0058: 0x00 0x58▒ U+00E3: 0x00 0xE3▒ U+2603: 0x26 0x03▒ U+10123: 0xD8 0x00 0xDD 0x23
![Page 71: Minicurso de Encoding - resolvendo problemas com acentuação (#TDC2012 Goiânia)](https://reader033.fdocuments.in/reader033/viewer/2022061206/5482a312b07959420c8b4859/html5/thumbnails/71.jpg)
UTF-8▒ Exemplos:
▒ U+0058: 0x58▒ U+00E3: 0xC3 0xA3▒ U+2603: 0xE2 0x98 0x83▒ U+10123: 0xF0 0x90 0x84 0xA3
![Page 72: Minicurso de Encoding - resolvendo problemas com acentuação (#TDC2012 Goiânia)](https://reader033.fdocuments.in/reader033/viewer/2022061206/5482a312b07959420c8b4859/html5/thumbnails/72.jpg)
UTF-8▒ Compatível com ASCII entre U+0000 e U+007F
▒ A partir de U+0080, usa mais de 1 byte
▒ Para os caracteres da língua portuguesa, usa 1 ou 2 bytes
![Page 73: Minicurso de Encoding - resolvendo problemas com acentuação (#TDC2012 Goiânia)](https://reader033.fdocuments.in/reader033/viewer/2022061206/5482a312b07959420c8b4859/html5/thumbnails/73.jpg)
UCS e UTF▒ O que eu preciso saber disso tudo?
▒ Apenas o seguinte:
![Page 74: Minicurso de Encoding - resolvendo problemas com acentuação (#TDC2012 Goiânia)](https://reader033.fdocuments.in/reader033/viewer/2022061206/5482a312b07959420c8b4859/html5/thumbnails/74.jpg)
UCS e UTF▒ Tabela de caracteres ≠ encoding
▒ Diferentes de representação▒ Mais comum: UTF-8
▒ UTF-8▒ Número variável de bytes por caractere (em geral, 1 ou 2)
![Page 75: Minicurso de Encoding - resolvendo problemas com acentuação (#TDC2012 Goiânia)](https://reader033.fdocuments.in/reader033/viewer/2022061206/5482a312b07959420c8b4859/html5/thumbnails/75.jpg)
No mundo real de hoje▒ Encodings mais usados nos sistemas que rodam no Brasil:▒ UTF-8▒ LATIN-1
![Page 76: Minicurso de Encoding - resolvendo problemas com acentuação (#TDC2012 Goiânia)](https://reader033.fdocuments.in/reader033/viewer/2022061206/5482a312b07959420c8b4859/html5/thumbnails/76.jpg)
No mundo real de hoje▒ U+0000 – U+007F
▒ Mesmos caracteres da tabela ASCII
▒ U+0000 – U+00FF▒ Mesmos caracteres da tabela LATIN-1
![Page 77: Minicurso de Encoding - resolvendo problemas com acentuação (#TDC2012 Goiânia)](https://reader033.fdocuments.in/reader033/viewer/2022061206/5482a312b07959420c8b4859/html5/thumbnails/77.jpg)
LATIN-1▒ Serve para representar qualquer caractere Unicode?
![Page 78: Minicurso de Encoding - resolvendo problemas com acentuação (#TDC2012 Goiânia)](https://reader033.fdocuments.in/reader033/viewer/2022061206/5482a312b07959420c8b4859/html5/thumbnails/78.jpg)
LATIN-1▒ Não!
▒ Usa exatamente 1 byte por caractere▒ 1 byte não seria suficiente
![Page 79: Minicurso de Encoding - resolvendo problemas com acentuação (#TDC2012 Goiânia)](https://reader033.fdocuments.in/reader033/viewer/2022061206/5482a312b07959420c8b4859/html5/thumbnails/79.jpg)
LATIN-1 e UTF-8▒ Exemplos
CaractereBytes usando
UTF-8Bytes usando
LATIN-1
X 0x58 0x58
à 0xC3 0xA3 0xE3
☃ 0xE2 0x98 0x83 Não existe
![Page 80: Minicurso de Encoding - resolvendo problemas com acentuação (#TDC2012 Goiânia)](https://reader033.fdocuments.in/reader033/viewer/2022061206/5482a312b07959420c8b4859/html5/thumbnails/80.jpg)
LATIN-1 e UTF-8▒ Blz!
▒ Então vamos representar a string “José”
▒ String: é uma informação ou um dado?
![Page 81: Minicurso de Encoding - resolvendo problemas com acentuação (#TDC2012 Goiânia)](https://reader033.fdocuments.in/reader033/viewer/2022061206/5482a312b07959420c8b4859/html5/thumbnails/81.jpg)
LATIN-1 e UTF-8▒ Lembra o Barakis Obamis com o PNG e o JPEG?
![Page 82: Minicurso de Encoding - resolvendo problemas com acentuação (#TDC2012 Goiânia)](https://reader033.fdocuments.in/reader033/viewer/2022061206/5482a312b07959420c8b4859/html5/thumbnails/82.jpg)
PNG
100011000100100100...
(440KB)
00110001011...
(62KB)
JPEG
![Page 83: Minicurso de Encoding - resolvendo problemas com acentuação (#TDC2012 Goiânia)](https://reader033.fdocuments.in/reader033/viewer/2022061206/5482a312b07959420c8b4859/html5/thumbnails/83.jpg)
LATIN-1 e UTF-8▒ O José com o LATIN-1 e UTF-8 é a mesma coisa!
![Page 84: Minicurso de Encoding - resolvendo problemas com acentuação (#TDC2012 Goiânia)](https://reader033.fdocuments.in/reader033/viewer/2022061206/5482a312b07959420c8b4859/html5/thumbnails/84.jpg)
LATIN-1
0x4A 0x6F 0x73 0xE9
(4 bytes)
UTF-8
José
0x4A 0x6F 0x73 0xC3 0xA9
(5 bytes)
![Page 85: Minicurso de Encoding - resolvendo problemas com acentuação (#TDC2012 Goiânia)](https://reader033.fdocuments.in/reader033/viewer/2022061206/5482a312b07959420c8b4859/html5/thumbnails/85.jpg)
LATIN-1 e UTF-8▒ Blz. Mas por que eu escrevo “José” num lugar e depois aparece “José” no outro?
![Page 86: Minicurso de Encoding - resolvendo problemas com acentuação (#TDC2012 Goiânia)](https://reader033.fdocuments.in/reader033/viewer/2022061206/5482a312b07959420c8b4859/html5/thumbnails/86.jpg)
LATIN-1 e UTF-8▒ Codificando “José” em UTF-8:
▒ J o s é▒ ↑ ↑ ↑ ↑▒ 0x4A 0x6F 0x73 0xC3 0xA9
![Page 87: Minicurso de Encoding - resolvendo problemas com acentuação (#TDC2012 Goiânia)](https://reader033.fdocuments.in/reader033/viewer/2022061206/5482a312b07959420c8b4859/html5/thumbnails/87.jpg)
LATIN-1 e UTF-8▒ Aí você envia esses bytes
0x4A 0x6F 0x73 0xC3 0xA9
para alguém
![Page 88: Minicurso de Encoding - resolvendo problemas com acentuação (#TDC2012 Goiânia)](https://reader033.fdocuments.in/reader033/viewer/2022061206/5482a312b07959420c8b4859/html5/thumbnails/88.jpg)
LATIN-1 e UTF-8▒ Se a pessoa ler em UTF-8, blz!
▒ 0x4A 0x6F 0x73 0xC3 0xA9
↓ ↓ ↓ ↓ J o s é
![Page 89: Minicurso de Encoding - resolvendo problemas com acentuação (#TDC2012 Goiânia)](https://reader033.fdocuments.in/reader033/viewer/2022061206/5482a312b07959420c8b4859/html5/thumbnails/89.jpg)
LATIN-1 e UTF-8▒ Mas e se ela ler em LATIN-1?
▒ 0x4A 0x6F 0x73 0xC3 0xA9
↓ ↓ ↓ ↓ ↓ J o s à ©
![Page 90: Minicurso de Encoding - resolvendo problemas com acentuação (#TDC2012 Goiânia)](https://reader033.fdocuments.in/reader033/viewer/2022061206/5482a312b07959420c8b4859/html5/thumbnails/90.jpg)
LATIN-1 e UTF-8▒ O texto foi:
▒ Escrito em UTF-8▒ Enviado a outro sistema
▒ Como o outro sistema vai adivinhar que o texto está em UTF-8?
![Page 91: Minicurso de Encoding - resolvendo problemas com acentuação (#TDC2012 Goiânia)](https://reader033.fdocuments.in/reader033/viewer/2022061206/5482a312b07959420c8b4859/html5/thumbnails/91.jpg)
Unicode▒ Mas então não é só todo mundo codificar seus caracteres usando Unicode e vai dar tudo certo!?
![Page 92: Minicurso de Encoding - resolvendo problemas com acentuação (#TDC2012 Goiânia)](https://reader033.fdocuments.in/reader033/viewer/2022061206/5482a312b07959420c8b4859/html5/thumbnails/92.jpg)
Unicode▒ Calma ...
▒ Em 1º lugar, Unicode não é um encoding. Não existe “codificar caracteres usando Unicode”.
▒ Em 2º lugar, não temos controle sobre todos os sistemas do mundo. Não podemos fazer com que todos usem o mesmo encoding (nem deveríamos).
![Page 93: Minicurso de Encoding - resolvendo problemas com acentuação (#TDC2012 Goiânia)](https://reader033.fdocuments.in/reader033/viewer/2022061206/5482a312b07959420c8b4859/html5/thumbnails/93.jpg)
Parte 3
Como faz pra dar certo
![Page 94: Minicurso de Encoding - resolvendo problemas com acentuação (#TDC2012 Goiânia)](https://reader033.fdocuments.in/reader033/viewer/2022061206/5482a312b07959420c8b4859/html5/thumbnails/94.jpg)
Informação=
dados + formade interpretá-los
![Page 95: Minicurso de Encoding - resolvendo problemas com acentuação (#TDC2012 Goiânia)](https://reader033.fdocuments.in/reader033/viewer/2022061206/5482a312b07959420c8b4859/html5/thumbnails/95.jpg)
Informação String
= =
Dados Bytes
+ +
Forma de interpretá-los
Encoding
![Page 96: Minicurso de Encoding - resolvendo problemas com acentuação (#TDC2012 Goiânia)](https://reader033.fdocuments.in/reader033/viewer/2022061206/5482a312b07959420c8b4859/html5/thumbnails/96.jpg)
String..
=..bytes + encoding
![Page 97: Minicurso de Encoding - resolvendo problemas com acentuação (#TDC2012 Goiânia)](https://reader033.fdocuments.in/reader033/viewer/2022061206/5482a312b07959420c8b4859/html5/thumbnails/97.jpg)
Não existe string sem encoding!
![Page 98: Minicurso de Encoding - resolvendo problemas com acentuação (#TDC2012 Goiânia)](https://reader033.fdocuments.in/reader033/viewer/2022061206/5482a312b07959420c8b4859/html5/thumbnails/98.jpg)
Não existe relação byte caractere sem encoding!
![Page 99: Minicurso de Encoding - resolvendo problemas com acentuação (#TDC2012 Goiânia)](https://reader033.fdocuments.in/reader033/viewer/2022061206/5482a312b07959420c8b4859/html5/thumbnails/99.jpg)
Como faz pra dar certo▒ 2 dicas para evitar problemas de encoding:
![Page 100: Minicurso de Encoding - resolvendo problemas com acentuação (#TDC2012 Goiânia)](https://reader033.fdocuments.in/reader033/viewer/2022061206/5482a312b07959420c8b4859/html5/thumbnails/100.jpg)
Como faz pra dar certo▒ 1) Use sequências de escape sempre que possível
▒ Para escrever “Programação”:▒ Em Java:
▒"Programa\u00e7\u00e3o"▒ Em HTML:
▒<p>Programação</p>
![Page 101: Minicurso de Encoding - resolvendo problemas com acentuação (#TDC2012 Goiânia)](https://reader033.fdocuments.in/reader033/viewer/2022061206/5482a312b07959420c8b4859/html5/thumbnails/101.jpg)
Como faz pra dar certo▒ 2) Faça conversões só quando realmente for necessário
▒ Ao fazer qualquer conversão, SEMPRE especifique o encoding
![Page 102: Minicurso de Encoding - resolvendo problemas com acentuação (#TDC2012 Goiânia)](https://reader033.fdocuments.in/reader033/viewer/2022061206/5482a312b07959420c8b4859/html5/thumbnails/102.jpg)
Como faz pra dar certo▒ Vetor de bytes não é string!▒ String não é vetor de bytes!
▒ O que é válido é:▒ Decompor string em vetor de bytes + encoding
▒ Compor string a partir de um vetor de bytes + um encoding
![Page 103: Minicurso de Encoding - resolvendo problemas com acentuação (#TDC2012 Goiânia)](https://reader033.fdocuments.in/reader033/viewer/2022061206/5482a312b07959420c8b4859/html5/thumbnails/103.jpg)
Como faz pra dar certo▒ Quando é que realmente precisamos fazer conversões?▒ Quando fazemos entrada/saída
![Page 104: Minicurso de Encoding - resolvendo problemas com acentuação (#TDC2012 Goiânia)](https://reader033.fdocuments.in/reader033/viewer/2022061206/5482a312b07959420c8b4859/html5/thumbnails/104.jpg)
Como faz pra dar certo▒ Exemplos:
![Page 105: Minicurso de Encoding - resolvendo problemas com acentuação (#TDC2012 Goiânia)](https://reader033.fdocuments.in/reader033/viewer/2022061206/5482a312b07959420c8b4859/html5/thumbnails/105.jpg)
Como faz pra dar certo▒ Você vai enviar texto em uma requisição HTTP?▒ Converta a string para bytes usando algum encoding
▒ Avise ao servidor que você vai usar esse encoding
▒ Envie os bytes
![Page 106: Minicurso de Encoding - resolvendo problemas com acentuação (#TDC2012 Goiânia)](https://reader033.fdocuments.in/reader033/viewer/2022061206/5482a312b07959420c8b4859/html5/thumbnails/106.jpg)
Como faz pra dar certo▒ Errado:
▒ Content-Type: text/plain
▒ Certo:▒ Content-Type: text/plain; charset=utf-8
▒ Content-Type: text/plain; charset=iso-8859-1
![Page 107: Minicurso de Encoding - resolvendo problemas com acentuação (#TDC2012 Goiânia)](https://reader033.fdocuments.in/reader033/viewer/2022061206/5482a312b07959420c8b4859/html5/thumbnails/107.jpg)
Como faz pra dar certo▒ Vai receber um XML?
▒ Receba o conteúdo (bytes)▒ Repasse diretamente os bytes para a sua biblioteca de processamento de XML
![Page 108: Minicurso de Encoding - resolvendo problemas com acentuação (#TDC2012 Goiânia)](https://reader033.fdocuments.in/reader033/viewer/2022061206/5482a312b07959420c8b4859/html5/thumbnails/108.jpg)
Como faz pra dar certo▒ Não preciso me preocupar com encoding ao processar XML?▒ Em geral, não!▒ XML informa seu encoding dentro do próprio documento▒ <?xml version="1.0" encoding="utf-8"?>▒ (deveria, pelo menos!)
![Page 109: Minicurso de Encoding - resolvendo problemas com acentuação (#TDC2012 Goiânia)](https://reader033.fdocuments.in/reader033/viewer/2022061206/5482a312b07959420c8b4859/html5/thumbnails/109.jpg)
Como faz pra dar certo▒ “Tem que passar o encoding, tem que passar o encoding...”
▒ E se eu não passar o encoding? Não funciona?
![Page 110: Minicurso de Encoding - resolvendo problemas com acentuação (#TDC2012 Goiânia)](https://reader033.fdocuments.in/reader033/viewer/2022061206/5482a312b07959420c8b4859/html5/thumbnails/110.jpg)
Como faz pra dar certo▒ Funciona!
▒ ...às vezes!
▒ O que acontece se eu não especificar encoding?▒ Nenhum encoding será usado!▒ Certo!?
![Page 111: Minicurso de Encoding - resolvendo problemas com acentuação (#TDC2012 Goiânia)](https://reader033.fdocuments.in/reader033/viewer/2022061206/5482a312b07959420c8b4859/html5/thumbnails/111.jpg)
!!!!!!!!!!!
!!ERRADO!!
!!!!!!!!!!!
![Page 112: Minicurso de Encoding - resolvendo problemas com acentuação (#TDC2012 Goiânia)](https://reader033.fdocuments.in/reader033/viewer/2022061206/5482a312b07959420c8b4859/html5/thumbnails/112.jpg)
![Page 113: Minicurso de Encoding - resolvendo problemas com acentuação (#TDC2012 Goiânia)](https://reader033.fdocuments.in/reader033/viewer/2022061206/5482a312b07959420c8b4859/html5/thumbnails/113.jpg)
Como faz pra dar certo▒ Se você não especificar encoding, será usado o encoding padrão da plataforma
▒ E isso é ERRADO!▒ É um perigo!▒ É um absurdo!
![Page 114: Minicurso de Encoding - resolvendo problemas com acentuação (#TDC2012 Goiânia)](https://reader033.fdocuments.in/reader033/viewer/2022061206/5482a312b07959420c8b4859/html5/thumbnails/114.jpg)
Como faz pra dar certo▒ Plataformas MUDAM!▒ Configurações de ambiente MUDAM!▒ Encoding padrão MUDA!
![Page 115: Minicurso de Encoding - resolvendo problemas com acentuação (#TDC2012 Goiânia)](https://reader033.fdocuments.in/reader033/viewer/2022061206/5482a312b07959420c8b4859/html5/thumbnails/115.jpg)
Java: jeito errado▒ byte[] meusBytes =
string.getBytes();
(...)
String minhaString =new String(bytes);
▒ Está dependente de plataforma!
![Page 116: Minicurso de Encoding - resolvendo problemas com acentuação (#TDC2012 Goiânia)](https://reader033.fdocuments.in/reader033/viewer/2022061206/5482a312b07959420c8b4859/html5/thumbnails/116.jpg)
Java: jeito certo▒ byte[] meusBytes =
string.getBytes("UTF-8");
(...)
String minhaString =new String(bytes, "UTF-8");
▒ Agora, sim, independe de plataforma!
![Page 117: Minicurso de Encoding - resolvendo problemas com acentuação (#TDC2012 Goiânia)](https://reader033.fdocuments.in/reader033/viewer/2022061206/5482a312b07959420c8b4859/html5/thumbnails/117.jpg)
Java: jeito certo▒ Não precisa ser UTF-8, pode ser qualquer outro
![Page 118: Minicurso de Encoding - resolvendo problemas com acentuação (#TDC2012 Goiânia)](https://reader033.fdocuments.in/reader033/viewer/2022061206/5482a312b07959420c8b4859/html5/thumbnails/118.jpg)
Java: jeito certo▒ byte[] meusBytes =
string.getBytes("LATIN1");
(...)
String minhaString =new String(bytes,
"LATIN1");
![Page 119: Minicurso de Encoding - resolvendo problemas com acentuação (#TDC2012 Goiânia)](https://reader033.fdocuments.in/reader033/viewer/2022061206/5482a312b07959420c8b4859/html5/thumbnails/119.jpg)
Java: jeito certo▒ byte[] meusBytes =
string.getBytes("UTF-16");
(...)
String minhaString =new String(bytes, "UTF-
16");
![Page 120: Minicurso de Encoding - resolvendo problemas com acentuação (#TDC2012 Goiânia)](https://reader033.fdocuments.in/reader033/viewer/2022061206/5482a312b07959420c8b4859/html5/thumbnails/120.jpg)
Java: jeito certo▒ byte[] meusBytes =
string.getBytes("UTF-32");
(...)
String minhaString =new String(bytes, "UTF-
32");
![Page 121: Minicurso de Encoding - resolvendo problemas com acentuação (#TDC2012 Goiânia)](https://reader033.fdocuments.in/reader033/viewer/2022061206/5482a312b07959420c8b4859/html5/thumbnails/121.jpg)
Demonstração...
![Page 122: Minicurso de Encoding - resolvendo problemas com acentuação (#TDC2012 Goiânia)](https://reader033.fdocuments.in/reader033/viewer/2022061206/5482a312b07959420c8b4859/html5/thumbnails/122.jpg)
Conclusões▒ Problemas de encoding acontecem nas melhores famílias
![Page 123: Minicurso de Encoding - resolvendo problemas com acentuação (#TDC2012 Goiânia)](https://reader033.fdocuments.in/reader033/viewer/2022061206/5482a312b07959420c8b4859/html5/thumbnails/123.jpg)
Conclusões▒ Causas são sempre as mesmas:
▒ String sendo lida e/ou escrita usando o encoding errado
▒ Uso indevido do encoding padrão da plataforma
▒ Causa raiz de todo o problema:▒ Ambiguidade: mais de uma maneira de representar a mesma informação
![Page 124: Minicurso de Encoding - resolvendo problemas com acentuação (#TDC2012 Goiânia)](https://reader033.fdocuments.in/reader033/viewer/2022061206/5482a312b07959420c8b4859/html5/thumbnails/124.jpg)
Conclusões▒ A solução é:
▒ Lembrar: não existe string sem encoding!
▒ Informar o encoding toda vez que fizer entrada/saída
![Page 125: Minicurso de Encoding - resolvendo problemas com acentuação (#TDC2012 Goiânia)](https://reader033.fdocuments.in/reader033/viewer/2022061206/5482a312b07959420c8b4859/html5/thumbnails/125.jpg)
Referências▒ The Absolute Minimum Every Software Developer Absolutely, Positively Must Know About Unicode and Character Sets (No Excuses!)▒ http://www.joelonsoftware.com/articles/Unicode.html
![Page 126: Minicurso de Encoding - resolvendo problemas com acentuação (#TDC2012 Goiânia)](https://reader033.fdocuments.in/reader033/viewer/2022061206/5482a312b07959420c8b4859/html5/thumbnails/126.jpg)
Referências▒ Lista de caracteres Unicode e suas diferentes representações▒ http://www.fileformat.info/info/unicode/
▒ The Unicode Consortium▒ http://unicode.org/
![Page 127: Minicurso de Encoding - resolvendo problemas com acentuação (#TDC2012 Goiânia)](https://reader033.fdocuments.in/reader033/viewer/2022061206/5482a312b07959420c8b4859/html5/thumbnails/127.jpg)
Referências▒ ASCII
▒ http://en.wikipedia.org/wiki/ASCII
▒ Unicode▒ http://en.wikipedia.org/wiki/Unicode
▒ UTF-8▒ http://en.wikipedia.org/wiki/UTF-8
![Page 128: Minicurso de Encoding - resolvendo problemas com acentuação (#TDC2012 Goiânia)](https://reader033.fdocuments.in/reader033/viewer/2022061206/5482a312b07959420c8b4859/html5/thumbnails/128.jpg)
Adendo▒ “José” em UTF-8 gasta 8 bytes?
▒ http://en.wikipedia.org/wiki/Byte_order_mark
▒ Encoding padrão da plataforma?▒ Em geral, é errado usar▒ Em raras situações, é correto. Ex: upload de arquivo no cliente.
![Page 129: Minicurso de Encoding - resolvendo problemas com acentuação (#TDC2012 Goiânia)](https://reader033.fdocuments.in/reader033/viewer/2022061206/5482a312b07959420c8b4859/html5/thumbnails/129.jpg)
Contatos▒ Andr\u00e9 Willik Valenti
▒ [email protected]▒ @awvFi
▒ Andrei de Oliveira Tognolo▒ [email protected]▒ /andreitognolo