2
respostas

Por que no Chrome saiu certinha a pontuação mesmo SEM a tag meta charset UTF-8?

Olá, Devs!!!

Escrevo este post desde um lugar de muita ignorância. Estou iniciando meu aprendizado na programação como todos vocês. Por gentilieza, se tem alguma informação incorreta, sinalizem!!

Fiz o exercício proposto pelo professor Flávio Almeida e mesmo sem usar a tag o Chrome exibiu o texto com a pontuação certinha.

A imagem mostra duas janelas: A da direita mostra o Chrome com o seguinte texto "A convenção que usaremos para criar nosso programa é adotar letras minúsculas e não usar acentos e, claro, usar a extensão .html Outro ponto importante é que toda a alteração feita no arquivo .html deve ser salva e, além disso, o navegador precisa recarregar a página para que a última alteração do arquivo entre em vigor." com a pontuação correta. A janela da esquerda mostra o mesmo texto aberto no Sublime Text sem a tag meta charset inserida

Lendo algumas resposta para tentar entender o que havia ocorrido, vi essa contribuição de Marcus Vinicius em alguma pergunta que fizeram. Insira aqui a descrição dessa imagem para ajudar na acessibilidade

Ao abrir com outros navegadores o arquivo .html (Firefox, Microsoft Edge), a acentuação continuava sendo mostrada corretamente Imagem mostra duas janelas> a da esqueda o arquivo .html aberto  com Firefox e da esqueda aberto com Microsoft Edge mostram o texto com a acentuação

A ausência de acentuação apareceu quando abri o arquivo com o Internet Explorer.... Aí sim, vi que a acentuação não foi tomada.

Insira aqui a descrição dessa imagem para ajudar na acessibilidade

Depois de utilizar a tag, o Internet Explorer mostrou o texto com a acentuação. A imagem mostra duas janelas> A da esquerda o Internet Explorer aberto com o texto com acentuação e a da direita, o Sublime Text que mostra o texto com a tag meta charset UTF-8

No ponto 04 ; Mudanças no Chrome e na Tag meta, o professor Flávio Almeida informa que nem todo navegador detecta automaticamente o encoding de um arquivo. O Chrome, a partir da versão 55, passou a detectar automaticamente o encoding dos arquivos. Então, é possível pensar que não é mais necessária a tag meta charset="UTF-8".
No entanto, ela deve continuar a ser usada, porque nem todos os navegadores detectam o encoding automaticamente, sendo assim, é uma boa prática manter a tag  meta indicando o charset usado na hora de criar o arquivo

Buscando mais informações sobre como saber o encoding de um arquivo, cheguei a este artigo em inglês (escrito em 2009) que diz que não é fácil descobrir qual é o encoding usado em um arquivo. No entanto, no próprio texto informa que o Firefox mostra. Particularmente, eu não conseguir ver a informação do encoding no Firefox Insira aqui a descrição dessa imagem para ajudar na acessibilidade

Mas quando abrimos o arquivo .html com o Notepad++, ele mostra o encondig do arquivo, que já está em UTF-8. Entendo que os navegadores Chrome, Firefox e Microsoft Edge detectam automaticamente o encoding de um arquivo. O mesmo não acontece com o Internet Explorer.

Imagem do arquivo .html aberto no Notepad, destacando no canto inferior direito o encondinf UTF-8

É isso. Espero poder ajudá-los. Coloquem sempre a tag , Devs!

2 respostas

Uau, essa curiosidade é uma característica marcante da maioria dos(as) grandes desenvolvedores(as).

Sobre o encoding, se não me engano esse curso deve ter mais de 4 anos, na época não eram todos os browsers que conseguiam detectar automaticamente o encoding. Quanto ao Internet Explorer, quando ele não encontra o content-type no cabeçalho da chamada http, nem na tag meta, ele tenta adivinhar o encoding baseado no padrão de bytes dos caracteres usados na página e compara com o padrão de várias línguas, como pôde perceber, nem sempre isso funciona.

E como você disse, sempre use a tag, porque nem todo dispositivo consegue detectar automaticamente o encoding.

Filipe, muitíssimo obrigada pela sua contribuição!!!!

A respeito dessa sua frase "ele tenta adivinhar o encoding baseado no padrão de bytes dos caracteres usados na página e compara com o padrão de várias línguas, como pôde perceber, nem sempre isso funciona." Tenho uma noção superficial de que cada variável tem um limite de bytes. Mas não sabia sobre os caracteres.

A respeito da curiosidade, sim, eu tenho e busco a infromação. Assistia muito ao Castelo Rá-tim_bum e aprendi com o garotinho do "por quê". E por que sim, não é resposta. ;)