Por que você precisa de programação?
A menor unidade de armazenamento do computador é byte (byte), e o número de caracteres que podem ser representados por byte é limitado, 1byte=8bit, um byte pode representar no máximo 255 caracteres, e existem muitas linguagens no mundo, há vários caracteres que não podem ser representados por byte, então o caractere de representação char no Java é para resolver esse problema de codificação, um char ocupa dois bytes, então deve ser codificado entre char e o menor byte unitário. O oposto é a decodificação.
Na verdade, codificação e decodificação são o processo de tradução completo ("tradução" é fácil de entender), e vários métodos de codificação são dicionários.
1. Código ASCII
O nome completo é American Standard Code for Information Interchange, que é o sistema de codificação de byte único mais comum do mundo, usado principalmente para exibir o inglês moderno e outras línguas da Europa Ocidental.
O código ASCII é representado por 7 bits, que só podem representar 128 caracteres, e 0~31 representa caracteres de controle como enter, backspace, delete, etc.; 32~126 significa que os caracteres impressos podem ser digitados pelo teclado e exibidos.
Entre elas, 48~57 é de 0 a 9 com dez números arábicos, 65~90 são 26 letras maiúsculas em inglês, 97~122 são 26 letras minúsculas em inglês, e o restante são alguns sinais de pontuação, símbolos de operação, etc., que podem consultar a tabela padrão ASCII para detalhes.
2、ISO-8859-1
Essa codificação é uma extensão da codificação ASCII, mas ainda é uma codificação de um byte e pode representar apenas um total de 256 caracteres.
Como o ASCII pode representar apenas 128 caracteres, a exibição não pode ser totalmente expressaISO-8859-1 estende a codificação ASCIIAlém do código ASCII, os símbolos correspondentes de texto das línguas da Europa Ocidental, grego, tailandês, árabe e hebraico, são adicionados, sendo compatível com a codificação ASCII.
3、GB2312
O nome completo do GB2312 é "Conjunto de Caracteres de Codificação Chinesa de Tecnologia da Informação", que é uma codificação de dois bytes com um intervalo de codificação de A1 a F7, sendo A1-A9 a área de símbolos, contendo um total de 682 símbolos; B0-F7 é a área dos kanji, contendo 6763 kanji.
O nome completo é conjunto de caracteres chineses para troca de informações, lançado pela China em 1980 e usado principalmente para processamento de caracteres chineses em sistemas de computador. GB2312 contém principalmente 6763 caracteres chineses e 682 símbolos.
GB2312 cobre a maior parte do uso de caracteres chineses, mas não pode lidar com caracteres raros especiais como o chinês antigo, então códigos como GBK e GB18030 apareceram posteriormente.
4、GBK
O nome completo do GBK é "Especificação de Extensão de Código Interno de Caracteres Chineses", que parece expandir o GB2312, seu alcance de codificação é 8140-FEFE (remover XX7F), com um total de 23940 bits de código, que pode representar 21003 caracteres chineses, e sua codificação é compatível com GB2312
GBK, o nome completo da Especificação do Código Interno Chinês, foi formulado em 1995. Ele expande principalmente o GB2312 e adiciona mais caracteres chineses em sua base, que contém um total de 21.003 caracteres chineses.
GBK é compatível com a codificação GB2312, o que significa que os caracteres chineses codificados em GB2312 podem ser decodificados normalmente com GBK e não aparecerão distorcidos, mas os caracteres chineses codificados com GBK não são necessariamente decodificados com GB2312.
5、GB18030
GB18030 nome completo é Especificação de Extensão de Código Interno de Caracteres Chineses, que é o mais recente conjunto de caracteres internos lançado em 2000 e aplicado em 2001, incluindo os caracteres linguísticos da maioria das minorias étnicas na China, e contém mais de 70.000 caracteres chineses.
Ele utiliza principalmente codificação de caracteres de byte único, duplo byte e quatro bytes, e é compatível com GB2312 e GBK, embora seja um padrão obrigatório em nosso país, raramente é usado em produção real, sendo os mais usados GBK e GB2312.
6. UNICODE
Para que seu idioma fosse exibido normalmente no computador, cada país e região tem seu próprio código, então ninguém conhece o código dos outros se houver códigos demais; nessa época, a organização ISO propôs um novo código chamado codificação UNICODE para suportar culturas, caracteres e símbolos globais. Quando o UNICODE foi formulado, a capacidade do computador não era mais um problema, então foi projetado para ser fixo em dois bytes, e todos os caracteres eram representados em 16 bits, incluindo caracteres em inglês que antes ocupavam apenas 8 bits, o que causaria desperdício de espaço, e o UNICODE não foi promovido e aplicado por muito tempo.
7、UTF-16
O surgimento do UTF-16 foi a ISO criar um novo dicionário supralingual, através do qual todas as línguas do mundo podem se traduzir; você pode imaginar o quão complexo e enorme é esse dicionário. UTF-16 usa dois bytes para representar o formato de conversão Unicode (dois bytes são 16 bits, então UTF-16) é um método de representação de comprimento fixo, ou seja, qualquer caractere pode ser representado em dois bytes. Isso torna muito conveniente representar personagens. No entanto, também há uma falha, ou seja, uma grande parte dos caracteres pode ser representada em um byte, mas o UTF-16 usa dois bytes, o que é um desperdício de espaço de armazenamento. Então existe outra forma de codificação, que é UTF-8.
UTF-16 é a implementação específica do UNICODE, 16 tem 16 bits, UTF-16 é a origem, definindo como os caracteres UNICODE são armazenados no computador, UTF-16 também usa dois bytes para representar qualquer caractere, o que torna a cadeia de operações muito eficiente, o que também é uma razão importante pela qual Java usa UTF-16 como formato para armazenar caracteres na memória.
O UTF-16 é adequado para uso entre disco e memória, e a conversão de caracteres e bytes entre si será mais simples e eficiente, mas não é adequado para transmissão em rede, o que pode danificar o fluxo de bytes.
8、UTF-8
O UTF-8 utiliza uma tecnologia de comprimento variável onde cada região de codificação tem diferentes comprimentos de código, e diferentes tipos de caracteres podem consistir de 1 a 6 bytes.
As regras de codificação para UTF-8 são as seguintes:
1) Se for 1 byte e o bit mais alto for 0, significa que este é 1 caractere ASCII. Pode-se ver que todas as codificações ASCII já são UTF-8
2) Se for 1 byte, começando com 11, o número de 1s consecutivos implica o número de bytes desse caractere, por exemplo: 110xxxxx significa que é o primeiro byte de um caractere UTF-8 de dois bytes
3) Se for 1 byte, começando com 10, significa que não é o primeiro byte, você precisa esperar para obter o primeiro byte do caractere atual.
Embora o UTF-16 seja muito eficiente, ele também é a maior desvantagem do UNICODE, pois todos os caracteres de um byte precisam contabilizar dois bytes, e o espaço de armazenamento é dobrado, o que obviamente consome recursos e não se adequa à situação atual de rápido desenvolvimento da Internet. Assim, com o UTF-8, trata-se de uma implementação da codificação de caracteres de comprimento variável do UNICODE, que pode usar 1~6 bytes de comprimento fixo para codificar caracteres UNICODE.
O UTF-8 utiliza armazenamento de um byte para caracteres ASCII e, se um único caractere for corrompido, isso não afetará os caracteres subsequentes, então o UTF-8 é ideal para o tradicional na web e é uma das codificações mais amplamente usadas atualmente.
Se você quer representar o chinês, a eficiência de codificação do UTF-8 é maior que o GBK e menor que o UTF-16, então também é o método de codificação mais ideal além do GBK. |