Qual a diferença?
Qual a diferença?
Vamos começar por Unicode e UTF-8.
Imagine que você faça uma lista de todos os caracteres em todas as linguagens do mundo e atribua um número a cada um deles.
Por exemplo, "A" maiúsculo é 65; "a" minúsculo é 97; "(" parêntesis esquerdo é 40, "横" pronunciado "yoko" em japonês e o primeiro carácter do meu nome é 27178, ":-)" ou o emoticon do sorriso é 9786.
Pronto! Essa tabela imensa que mapeia caracteres a números chama-se Unicode.
Agora, normalmente, por causa do número grande de caracteres no mundo, você precisaria de 32 bits ou quatro bytes para cada carácter. Se você, no entanto, só tem texto em português, provavelmente os caracteres que você usa mais são aqueles de número mais baixo… 8 bits ou 1 byte é suficiente para a maioria dos caracteres desse texto aqui. Então, faz sentido codificar um sistema em que os caracteres de 0 a 64 ocupam um byte só; caracteres com numeração maior ocupam dois bytes, e caracteres com numeração ainda maior ocupam três bytes ou 4 bytes. Isso economiza memória. Os dois primeiros bits de cada byte podem indicar se precisa de mais um byte. Esse esquema de codificação chama-se UTF-8. .. ou seja, uma forma de representar os números associados a cada caracter de acordo com a tabela UNICODE em um, dois, três ou quatro bytes.
Outros esquemas existem: UTF-16 e UTF-32.
Por exemplo, o caractere japonês/chinês 横 ("Yoko" em japonês) tem o código Unicode 27178 em decimal ou 0x6A2A em hexadecimal. Em UTF-8, esse código é representado por 3 bytes: E6 A8 AA em hexadecimal: em UTF-16, é representado por 6A 2A; e em UTF-32 é representado por 00 00 6A 2A. Unicode
Agora, o que é ANSI? Bem, antes do UNICODE existir, a gente usava os caracteres de numeração 0 a 127 como na tabela ASCII, por exemplo, a letra "a" é 97 como em UNICODE. Mas os caracteres de 128 a 255 variavam de acordo com a página de código. Se o texto é em português, então representam os caracteres latinos como o "C" cedilha; se o texto é em russo, então os números de 128 a 255 representam textos em cirílico, etc. Mas, aí, você não pode misturar textos em português e em russo ao mesmo tempo no mesmo arquivo de dados, pois o número 145 pode significar um carácter latino em português mas um carácter cirílico em russo, então existe ambiguidade e você precisa saber em que língua o arquivo está. Isso não é muito bom, então a gente não usa mais este esquema. Outro problema é que você só pode representar 256 caracteres.
Agora entendi, muito obrigado (⌒‿⌒)