A primeira vez que o ASCII realmente importava para mim, EU estava depurando uma importação CSV para um plugin WordPress que ficava dividindo um endereço do cliente' s em duas linhas O arquivo parecia bem em cada editor em que abri, Descobriu-se que uma exportação tinha usado um retorno de carro nu (código 13) como um final de linha enquanto meu analisador esperava um feed de linha (código 10), e um separador de registro perdido (código 30) tinha se infiltrado de uma exportação de mainframe upstream Nenhum desses caracteres imprime nada Você não pode vê-los Você só pode vê-los se tiver uma tabela que transforma o byte invisível em um número e um nome - e é exatamente por isso que EU construí o mesa ASCII no Toolz.dev e por que o mantenho preso em uma guia do navegador.
tl;dr: ASCII mapeia cada caractere básico em inglês e um conjunto de sinais de controle para os números 10 básicos; conjuntos estendidos como ISO 88591 (latim-1) preenchem 128255. Capital
Atem 65 anos, minúsculasais 97 is 32, e o espaço & quot; invisible" codes 0 space, 1 são caracteres de controle como tab (9), line feed (10), carriage return (13) Se você puder ler a tabela, poderá decodificar quase qualquer bug de codificação de texto, escapar de qualquer caractere com segurança em HTML e entender por que UTF-8, JSON e cada linguagem de programação se comportam da maneira que fazem com strings.
I & #39; passei anos construindo coisas que vivem e morrem no tratamento de texto - um plugin de administrador WordPress, APIs Laravel, front-ends React - e posso dizer que um modelo mental funcional de ASCII economiza mais horas de depuração do que quase qualquer outra peça de conhecimento de baixo nível Este guia é a versão que EU gostaria que alguém tivesse me entregue cedo.
O que é ASCII e por que ainda importa?
ASCII significa Código Padrão Americano para Intercâmbio de Informações. Foi padronizado pela primeira vez em 1963 e definido no formato que ainda usamos como ANSI X3.4-1986 (também publicado internacionalmente como ISO/IEC 646), e a definição de rede ainda citada hoje é RFC 20 (1969).No seu coração é uma tabela de pesquisa: um mapeamento dos números de 0 a 127 para um conjunto específico de caracteres e sinais de controle Sete bits, 128 slots, um acordo que todo o mundo da computação poderia compartilhar.
Esse acordo é a razão pela qual um arquivo de texto escrito em um servidor Linux em 1990 ainda abre corretamente em um laptop Mac hoje Antes dos códigos de caracteres padrão, cada fabricante tinha seu próprio esquema, e mover texto entre máquinas era um problema de tradução ASCII corrigiu os 128 códigos inferiores no lugar, e nunca se moveu desde então.
O que surpreende as pessoas é o quanto da computação moderna ainda repousa diretamente sobre ele Unicode - o padrão gigante que cobre emoji, chinês, árabe e todos os outros scripts - deliberadamente faz seus primeiros 128 pontos de código idênticos ao ASCII UTF-8, a codificação que alimenta a web, codifica esses primeiros 128 pontos de código como bytes únicos com os valores ASCII exatos Assim, um arquivo de texto ASCII simples é também um arquivo UTF-8 válido, byte por byte Quando você entende ASCII, você entendeu a base sobre a qual o resto da codificação de texto é construído.
Como está organizada a tabela ASCII?
Os 128 códigos padrão se enquadram em alguns grupos naturais, e conhecer o grupo costuma ser mais útil do que memorizar qualquer valor único.
Caracteres de controle (031 e 127). Estes são os códigos não-impressão Eles carregam instruções em vez de glifos: nulo (0), sino (7), backspace (8), guia horizontal (9), alimentação de linha (10), retorno de carro (13), escape (27), e excluir (127) são os que você & #39; na verdade, vai encontrar Eles foram projetados para dirigir máquinas de teletipo, e seus fantasmas ainda executar tudo, desde finais de linha em seus arquivos de origem para as sequências de escape que colorem sua saída de terminal.
Símbolos de pontuação imprimíveis (3247, 5864, 9196, 122126). O espaço é 32 - o código mais baixo para impressão, e tecnicamente um caractere de impressão, mesmo que não mostre nada O resto são os símbolos espalhados pelo seu teclado: ! tem 33 anos, @ tem 64 anos, ~ é 126.
Dígitos (4857). Os personagens 0 completo 9 sente-se numa corrida organizada de 48 a 57. Essa ordem é deliberada: subtraia 48 de um código digit's e você obtém seu valor numérico, que é como quase todos os & quot; analisar um número de uma string" a rotina começa.
Maiúsculas (65 letras maiúsculas (0) e minúsculas (9712). A tem 65 anos, Z é 90; a tem 97 anos, z é 122. A diferença entre uma letra e #39; A forma maiúscula e minúscula é sempre exatamente 32.
O alcance estendido (128255) é um animal diferente, e ele & #39; s onde vive a maior parte da confusão - por isso obtém sua própria seção abaixo.
Qual é a diferença entre ASCII e ASCII estendido?
O ASCII padrão define apenas 128 códigos porque usa apenas sete bits. Mas os computadores armazenam texto em bytes de oito bits, o que deixa 128 slots extras (128 slots 255) não utilizados pelo padrão. " ASCII e quot estendidos; é o termo genérico para os vários esquemas que preenchem esses slots.
A captura - e it' s um grande - é que não há um único ASCII estendido Diferentes páginas de código atribuir os 128 códigos superiores completamente diferente IBM' s página de código 437 colocar caracteres de desenho de caixa lá Windows-1252 colocar aspas encaracoladas eo sinal de euro lá ISO/IEC 8859-1, conhecido como Latin-1, colocar letras acentuadas da Europa Ocidental lá Um byte com valor 233 é é em latim-1, mas algo totalmente diferente na página de código 437.
No toolz.de mostrar a atribuição ISO 8859-1 (Latin-1) para os códigos 160255, porque é um padrão publicado real e é a base do conjunto de caracteres HTML original - o que significa que as entidades HTML nomeadas alinham-se Os códigos 128159 em latim-1 são um segundo bloco de caracteres de controle (os controles " C1"), então a ferramenta os rotula como tal, em vez de fingir que eles ' pode ser impresso.
A lição prática: quando alguém diz & quot; ASCII alargado, & quot; pergunta sempre qual. Uma página de código incompatível é a causa clássica do é mojibake você vê quando um arquivo UTF-8 é lido como Latin-1, ou as caixas de glifos ausentes quando o inverso acontece Entendendo privacidade de dados e como as ferramentas lidam com seu texto é uma preocupação; entender como os bytes mapeiam para os caracteres é a outra metade de nunca mais ser surpreendida por texto distorcido.
Por que maiúsculas e minúsculas diferem exatamente em 32?
Esta é a minha peça favorita de design ASCII, porque ele & #39; não é um acidente - it' s engenharia O layout foi escolhido para que uma letra & #39; s maiúsculas e minúsculas formas diferem apenas no bit 5, que tem o valor 32. A tem 65 anos (binário 01000001); a é 97 (binário 01100001). A única diferença é aquele único bit.
Essa decisão significa que um programa pode alterar o caso com uma operação bit a bit em vez de uma tabela de pesquisa Para maiúsculas uma letra minúscula, limpe o bit 5 (code & ~32); para minúsculas, maiúsculas, defina-o (code | 32); para trocar maiúsculas de minúsculas de qualquer maneira, inverta (code ^ 32). Décadas de bibliotecas de strings foram construídas sobre esse truque antes do Unicode' s regras de caso mais complexas tornaram inseguro para qualquer coisa além do ASCII simples Quando você navega na tabela e percebe que cada letra maiúscula fica precisamente 32 abaixo de seu gêmeo minúsculo, você' está olhando para uma decisão tomada na década de 1960 que ainda molda como o software é escrito.
Como converto entre caracteres, decimal, hexadecimal e binário?
Cada código ASCII tem quatro representações comuns, e mover-se entre elas é uma parte rotineira do trabalho de baixo nível Aqui & #39; s como eles se relacionam para a letra H:
| Representação | Valor para H |
Onde você e#39; vou ver |
|---|---|---|
| personagem | H |
texto normal |
| decimal | 72 | String.fromCharCode(72), chr(72) |
| hexadecimal | 48 | Despejos hexadecimais, \x48, codificação URL/porcentagem |
| octal | 110 | Ferramentas Unix mais antigas, \110 fugas |
| binário | 01001000 | Operações bit a bit, design de protocolo |
Para soletrar uma palavra hexadecimal, pegue cada par de dígitos hexadecimais como um byte: 48 69 tem 72.105 decimais, o que é Hi. Para ir para o outro lado, procure cada personagem' s código. o mesa ASCII faz ambas as direções - mostra todas as cinco colunas de cada código, e sua caixa de pesquisa aceita um caractere, um número decimal, um valor hexadecimal (com ou sem a 0x prefixo), uma string octal ou binária, ou mesmo um nome de entidade HTML, digitando assim &, 38, ou amp todos saltam para o e comercial.
Se você & #39; está convertendo rotineiramente strings inteiras ou trabalhando em bases numéricas além do ASCII, o tradutor binário e o conversor de base numérica são as ferramentas complementares que procuro. A tabela ASCII é a referência; esses dois são as bancadas de trabalho.
Para que servem realmente os caracteres de controle ASCII?
Os códigos não-impressores 0print1 (mais 127) parecem peças de museu, mas várias delas funcionam diariamente.
Alimentação de linha (10) e retorno de carro (13) são os dois grandes Em um teletipo, o retorno do carro moveu a cabeça de impressão de volta para a margem esquerda e o feed de linha avançou o papel uma linha - duas ações físicas separadas Esse legado é o motivo pelo qual os arquivos de texto do Windows terminam as linhas com ambos (CRLF13 e depois 10), enquanto Unix e macOS usam apenas feed de linha (LF, 10).Quase todos os & quot; por que é que o meu ficheiro está cheio de ^M personagens?" traços de bug de volta para esta divisão Meu desastre CSV da introdução foi exatamente isso.
Guia horizontal (9) é o caractere de guia - um único byte que os editores renderizam como vários espaços. Nulo (0) termina as cadeias em C e marca o & quot; sem dados & quot; em inúmeros formatos. Fuga (27) apresenta as sequências de controle que movem o cursor e colorem o terminal. Sino (7) uma vez tocou uma campainha de verdade; agora ele emite um sinal sonoro ou pisca sua janela terminal.
A razão pela qual uma boa tabela nomeia estes códigos é importante: quando você encontra um byte 27 nos seus dados, o & quot; ESC - Escape" informa instantaneamente que você & #39; está olhando para uma sequência de controle de terminal, não para um texto corrompido Um número bruto deixaria você adivinhando.
Como o ASCII se relaciona com entidades HTML e fuga segura?
Se você escrever para a web - e construindo um sólido kit de ferramentas para desenvolvedores significa que você irá - um punhado de caracteres ASCII precisa escapar para que o navegador não & #39; t interpretá-los erroneamente como marcação O sinal de menor do que < (60), maior que > (62), e comercial & (38) e citação dupla " (34) são os quatro perigososDeixados crus dentro do HTML eles podem quebrar sua página ou abrir um buraco de injeção; escrito como entidades (<, >, &, ") eles traduzem como caracteres literais.
Cada código também possui uma entidade HTML numérica no formulário &#code;(portanto, mesmo um caractere sem entidade nomeada sempre pode ser escrito com segurança A tabela ASCII lista a entidade nomeada onde existe e o formulário numérico de outra forma, e clicar na coluna HTML copia-a diretamente para sua área de transferência Quando você precisa codificar ou decodificar um bloco inteiro de marcação em vez de procurar um único caractere, o entidades html tool lida com o trabalho em lote Para um passeio mais profundo pelos utilitários de codificação que uso no dia a dia, o Guia de ferramentas de codificação caminha por todo o set.
A tabela ASCII é a mesma que Unicode?
Não, mas eles' são deliberadamente compatíveis, e vale a pena esclarecer o relacionamento. Unicode é um padrão muito maior - mais de um milhão de pontos de código possíveis, cobrindo todos os sistemas de escrita, além de símbolos e emoji. ASCII, com seus 128 códigos, é um subconjunto minúsculo. O que os faz jogar bem juntos é que Unicode' os primeiros 128 pontos de código são definidos como idênticos ao ASCII, e UTF-8 codifica exatamente esses 128 como bytes únicos com seus valores ASCII.
A consequência é elegante: qualquer ficheiro ASCII válido é automaticamente um ficheiro UTF-8 válido Nunca terá de converter texto simples em inglês entre os dois No momento em que ultrapassa o código 127 - uma letra acentuada, uma citação encaracolada, um emoji - deixa ASCII para trás e você' está firmemente no território Unicode de vários bytes, onde um caractere pode ocupar dois, três ou quatro bytes A tabela Toolz.dev ASCII cobre os intervalos ASCII e Latin-1 diretamente, e o seu codificador de texto reporta o ponto de código Unicode para qualquer caractere que cole para além deles, para que possa ver exatamente onde termina o ASCII e o Unicode assume o controlo.
Perguntas frequentes
O que é ASCII?
ASCII (Código Padrão Americano para Intercâmbio de Informações) é um padrão de codificação de caracteres que mapeia letras, dígitos, pontuação e sinais de controle para os números 0–127. Foi padronizado como ANSI X3.4 em 1963 e continua sendo a base de codificações de texto modernas, incluindo UTF-8, cujos primeiros 128 pontos de código são idênticos ao ASCII.
Qual é o valor ASCII do & quot;A"?
A letra maiúscula & quot;A & quot; tem o valor ASCII 65 (hex 41, octal 101, binário 01000001).O & quot minúsculo;a & quot; é 97 - exatamente 32 mais alto - e é por isso que inverter o bit 5 alterna uma letra entre maiúscula e minúscula.
Qual é a diferença entre ASCII e ASCII estendido?
O ASCII padrão usa os bits superiores e define os códigos 18 (017). " ASCII & quot estendidos; usa o oitavo bit para adicionar outros 128 códigos (128255) para letras acentuadas, símbolos e caracteres de desenho de caixa Não há um único ASCII estendido - páginas de código diferentes atribuem a metade superior de forma diferente Esta tabela mostra a atribuição ISO 8859-1 (latim-1), a base do conjunto de caracteres HTML latino-1.
O que são personagens de controle ASCII?
Os códigos 0–31 e 127 são caracteres de controle que não imprimem que carregam instruções em vez de glifos visíveis. Os comuns incluem alimentação de linha (10), retorno de carro (13), guia horizontal (9), escape (27) e nulo (0). Eles originalmente controlavam as máquinas de teletipo e ainda terminavam linhas, delimitavam campos e acionam as sequências de escape dos terminais hoje.
Como faço para converter hexadecimal em ASCII?
Cada par de dígitos hexadecimais representa um byte, que mapeia para um código ASCII. O hexadecimal 48 tem 72 decimal, que é o & quot; H & quot;; o hexadecimal 69 é o 105, que é o & quot; i & quot; - então o 48 69 soletra o & quot; Hi & quot; Procurar na tabela ASCII pelo valor hexadecimal (com ou sem prefixo 0 x) para encontrar o caractere correspondente instantaneamente.
Por que as letras maiúsculas diferem das minúsculas em 32 no ASCII?
ASCII foi disposto de modo que a única diferença entre uma letra & #39; s maiúsculas e minúsculas formas é bit 5 (o valor 32). "A & quot; é 65 e "a & quot; é 97; " Z & quot; é 90 e " z & quot; é 122. este design deliberado permite programas mudar caso com uma única operação bit a bit em vez de uma tabela de consulta.
A tabela ASCII é a mesma que Unicode?
Não é o mesmo, mas compatível Unicode é um padrão muito maior cobrindo mais de um milhão de pontos de código em todos os sistemas de escrita Seus primeiros 128 pontos de código são idênticos ao ASCII, e UTF-8 os codifica como bytes únicos, então o texto ASCII válido também é UTF-8 válido A tabela ASCII cobre os intervalos ASCII e Latin-1; seu codificador relata pontos de código Unicode para caracteres além deles.
Meu texto é privado quando uso a Tabela ASCII?
Sim. A tabela inteira é gerada no seu navegador em JavaScript simples, e qualquer texto que você colar no codificador é processado localmente - ele nunca é carregado, registrado ou armazenado, e a ferramenta continua funcionando sem conexão de rede depois que a página é carregada.
Escrito por Liton, construtor de [Toolz.dev] (/, WP Adminify, e uma longa linha de projetos Laravel e React que todos, mais cedo ou mais tarde, se resumiram a acertar os bytes.



