No trabalho diário de desenvolvimento do front-end, geralmente lidamos com HTML, JavaScript, CSS e outros idiomas. Como uma linguagem real, a linguagem do computador também possui alfabeto, gramática, lexics, métodos de codificação etc. Aqui vou falar brevemente sobre os problemas de codificação que geralmente encontram no trabalho diário de HTML e JavaScript front-end.
Nos computadores, as informações que armazenamos são representadas pelo código binário. O que sabemos sobre a conversão de símbolos como caracteres em inglês e chinês exibidos na tela e o código binário usado para armazenamento está codificando.
Existem dois conceitos básicos a serem explicados: CHARSET e CODIDA DE CARACTERS:
Charset, um conjunto de caracteres, ou seja, uma tabela de mapeamento de relações entre um símbolo e um número, ou seja, determina que 107 é o 'a' de Koubei, 21475 é a "boca" da boca a boca, e as tabelas diferentes têm diferentes relações de mapeamento, como ASCII, GB2312, unicode. Através desta tabela de mapeamento de números e caracteres, podemos converter um número binário representado em um determinado caractere.
Método de codificação, codificação de grama. Por exemplo, para o número 21475 que deve ser "portado", devemos usar /u5k3e3 para representá -lo, ou%e5%8f%A3 para representá -lo? Isso é determinado pela codificação do caractere.
Para cordas como 'Cuoxin.com', elas são personagens comumente usados para os americanos. Eles formularam um conjunto de caracteres chamado ASCII, com o nome completo sendo o Código de Informações Americano do Código de Informações. Os 128 números 0127 (à 7ª potência de 2, 0 × 00-0 × 7f) representando os 128 caracteres comumente usados como 123ABC. Existem 7 bits no total, e o primeiro é o bit de sinal, que deve ser usado para usar o código inverso do complemento para representar números negativos ou algo assim. Existem 8 bits no total para formar um byte. Os americanos eram um pouco mesquinhos naquela época. Se eles tivessem projetado um byte com 16 bits ou 32 bits desde o início, haveria muitos problemas no mundo. No entanto, naquela época, eles provavelmente pensaram que 8 bits eram suficientes, o que poderia representar 128 caracteres diferentes!
Como os computadores são feitos pelos americanos, eles economizam problemas e codificam todos os símbolos que usam, o que os torna muito confortáveis de usar. Mas quando os computadores começaram a se internacionalizar, o problema surge. Tome a China como exemplo. Os caracteres chineses são apenas dezenas de milhares. O que devo fazer?
Os 8 bits existentes que um sistema de bytes é a base, ele não pode ser destruído, ele não pode ser modificado para 16 bits ou algo assim, caso contrário, as alterações serão muito grandes, para que você possa seguir outro caminho: use vários caracteres ASCII para representar um caractere diferente, ou seja, MBCs (sistema de caracteres multi-byte, sistema de caracteres multi-byte).
Com esse conceito de MBCs, podemos representar mais caracteres. Por exemplo, se usarmos 2 caracteres ASCII, existem 16 bits e, em teoria, existem 2 caracteres no poder de 16 65.536 caracteres. Mas como essas codificações são atribuídas aos caracteres? Por exemplo, a codificação unicode da "boca" "boca" é 21475. Quem decidiu? O conjunto de personagens, que é o charset que acabou de ser introduzido. ASCII é o conjunto de personagens mais básico. Acima disso, temos conjuntos de caracteres semelhantes aos GB2312 e BIG5 para MBCs em chinês e chinês tradicional simplificados, etc. Finalmente, havia uma instituição chamada Unicode Consortium, que decidiu criar um conjunto de caracteres (UCS, conjunto de caracteres universais), incluindo todos os caracteres e o método de codificação correspondente, nomeadamente unicode. Desde 1991, lançou a primeira edição da Unicode International Standards, ISBN 0-321-18578-1 e a Organização Internacional de Padronização ISO também participou da personalização disso, ISO/IEC 10646: o conjunto de caracteres universal. Em resumo, o Unicode é um padrão de personagem que basicamente cobre todos os símbolos existentes na Terra. Agora está sendo usado cada vez mais amplamente. O padrão ECMA também estipula que os caracteres internos da linguagem JavaScript usam o padrão Unicode (isso significa que os nomes de variáveis de JavaScript, nomes de funções etc. são permitidos em chinês!).
Para os desenvolvedores da China, eles podem encontrar mais problemas, como conversão entre GBK, GB2312 e UTF-8. Estritamente falando, essa afirmação não é muito precisa. GBK e GB2312 são conjuntos de caracteres (charsets), enquanto o UTF-8 é um método de codificação (codificação de caracteres), que é um método de codificação dos conjuntos de caracteres UCS no padrão Unicode. Como as páginas da web usando conjuntos de caracteres Unicode são codificadas principalmente com o UTF-8, as pessoas geralmente as juntam, o que é realmente impreciso.
Com o Unicode, pelo menos antes que a civilização humana encontrasse alienígenas, isso é uma chave mestre, então use -a. Agora, o método de codificação Unicode mais utilizado é o UTF-8 (formato de transformação UCS/Unicode de 8 bits), que tem várias coisas particularmente boas:
Codificando o conjunto de personagens UCS, universal em todo o mundo
É um método de codificação de caracteres de comprimento variável, compatível com ascii
O segundo ponto é uma grande vantagem, que torna os sistemas que usaram a codificação ASCII pura previamente compatíveis, e não adiciona armazenamento adicional (assumindo que um método de codificação longo seja definido, cada caractere consiste em 2 bytes, então o espaço de armazenamento ocupado por caracteres ASCII será dobrado neste momento).