Bytes hexadecimais não são pontos de código Unicode
O hexadecimal é uma forma compacta de exibir bytes. Dois dígitos hexadecimais representam um byte, de 00 a FF. Uma letra simples do alfabeto latino costuma ocupar um byte em UTF-8, o que faz um exemplo curto parecer uma substituição caractere por caractere. Esse atalho deixa de funcionar para boa parte do texto que as pessoas realmente escrevem. Uma letra acentuada pode ocupar dois bytes; um emoji pode ocupar quatro ou formar uma sequência mais longa.
O ponto de código U+00E9 identifica o caractere é. Seus bytes em UTF-8 são C3 A9, e não E9. Enviar o byte isolado E9 a um decodificador UTF-8 estrito é, portanto, um erro, mesmo que o hexadecimal em si seja válido. Se um log foi produzido com uma codificação legada, descubra essa codificação na origem em vez de ficar tentando até que a saída pareça plausível.
Este conversor verifica a sintaxe hexadecimal antes de tentar decodificar os caracteres. Uma sequência compacta como 4869 é aceita. Grupos completos como 48 69, 48:69 e 0x48,0x69 também. Um número ímpar de dígitos em um grupo é rejeitado. Colunas de endereço, strings de linguagens de programação com escapes e a coluna imprimível lateral de um hexdump completo ficam fora deste analisador; cole apenas os dados dos bytes.
Mantenha separadas as tarefas numéricas e as de texto. O hexadecimal FF representa o inteiro 255, mas não é um byte de texto UTF-8 válido isolado. Use o conversor de bases numéricas para calcular esse valor e esta ferramenta quando os bytes codificarem uma mensagem. O texto obtido com sucesso pode seguir para as ferramentas de documentos existentes. Os caracteres NULL permanecem nos downloads, embora o envio para documentos os rejeite.