O que é 48 65 6C 6C 6F em texto?
Hello Em ASCII e UTF-8, 48 é H, 65 é e, 6C é l e 6F é o.
Converta hexadecimal para texto e texto para hex. Cole hex em qualquer formato — com espaços, 0x, \x, saída do xxd ou hexdump, arrays de bytes Java ou C — e ASCII, UTF-8, GBK ou UTF-16 é detectado sozinho. Roda no navegador.
Lido como hex simples · 13 bytes
Hello, 世界
UTF-8 detectado automaticamente: todas as sequências multibyte são bem formadas.
O resultado também é hex — provavelmente foi convertido duas vezes. Mais uma rodada dá:
| Codificação | Leitura |
|---|---|
| UTF-8 Decodifica sem erros | Hello, 世界 |
| GBK / GB18030 Decodifica sem erros | Hello, 涓栫晫 |
| UTF-16LE Tem bytes não decodificáveis | 效汬Ɐ隸闧� |
| UTF-16BE Tem bytes não decodificáveis | 䡥汬漬⃤뢖� |
| ISO-8859-1 Decodifica sem erros | Hello, ä¸<96>ç<95><8C> |
48 65 6C 6C 6F 2C 20 E4 B8 96 E7 95 8C
Escrito e revisado por desenvolvedores que constroem as ferramentas de codificação do Go Tools. Cada valor hex e cada saída citados nesta página são produzidos pelo próprio motor da página e verificados por testes automatizados.
Hello Em ASCII e UTF-8, 48 é H, 65 é e, 6C é l e 6F é o.
Normalmente 3 bytes em UTF-8, 2 em GBK 你 é E4 BD A0 em UTF-8 e C4 E3 em GBK.
CR LF (\r\n) Retorno de carro seguido de avanço de linha — a quebra de linha usada pelo Windows, pelo HTTP e pela maioria dos conjuntos de comandos seriais.
41 O a minúsculo é 61; maiúscula e minúscula sempre diferem em 20.
Hexadecimal é uma forma de escrever bytes: cada byte, de 0 a 255, é escrito como dois dígitos, de 00 a FF. A conversão de hex para string transforma esses bytes de volta em texto legível e sempre envolve a escolha de uma codificação de caracteres — a tabela que diz qual byte, ou sequência de bytes, representa qual caractere.
Em texto em inglês a escolha quase nunca aparece, porque ASCII, UTF-8, GBK e a maioria das outras codificações concordam nos bytes 00 a 7F. Com qualquer outra coisa, ela aparece na hora. Os bytes C4 E3 BA C3 são 你好 em GBK e inválidos em UTF-8, enquanto 你好 em UTF-8 é E4 BD A0 E5 A5 BD. O hex é só metade da informação; a codificação é a outra metade.
String para hex é o inverso: codifique o texto em bytes e escreva cada byte como dois dígitos hex. Desenvolvedores fazem isso para ver exatamente o que passa por uma linha serial ou entra numa coluna do banco de dados, para colocar dados binários no código-fonte e para comparar o que dois sistemas realmente enviaram.
$ echo 48656c6c6f | xxd -r -p
Hello
>>> bytes.fromhex('c4e3bac3').decode('gbk')
'你好'
>>> bytes.fromhex('c4e3bac3').decode('utf-8')
UnicodeDecodeError: 'utf-8' codec can't decode byte 0xc4 in position 0: invalid continuation byte Com espaços, compacto, separado por dois-pontos ou hífens, valores 0x, escapes \x, codificação %, arrays C, Go e Java, a saída com sinal de Arrays.toString do Java, literais bytes do Python, Buffers do Node.js e telas completas de xxd, hexdump -C e od. A página diz o que reconheceu e o que removeu.
A detecção automática procura uma marca de ordem de bytes, UTF-8 bem formado, UTF-16, ASCII puro e, por fim, GBK, e diz qual regra decidiu. GBK só é escolhido quando os bytes formam caracteres chineses comuns, então quadros binários curtos são apontados como provavelmente não sendo texto, em vez de virarem chinês sem sentido.
Os mesmos bytes aparecem como UTF-8, GBK, UTF-16LE, UTF-16BE e ISO-8859-1, cada um marcado conforme decodifica sem erros ou não. Quando o texto sai embaralhado, a leitura correta costuma estar uma linha abaixo.
NUL, CR, LF, ESC e outros bytes de controle aparecem como ␀ ␍ ␊ ␛, então um 00 sobrando no final ou um 0D faltando em dados de protocolo salta aos olhos. Copiar continua trazendo os caracteres reais.
Texto → Hex gera hex com espaços ou compacto, listas 0x, escapes \x, um array C no estilo xxd -i, um byte[] Java com valores com sinal, um literal bytes do Python igual ao de repr(), um []byte Go ou um dump xxd — e a página consegue ler cada um deles de volta.
A análise e a decodificação rodam localmente em JavaScript. Nada é enviado, armazenado ou colocado na URL, então dá para colar capturas de pacotes e logs de produção com segurança.
bytes.fromhex(h).decode() bytes.fromhex('48 65 6c 6c 6f').decode('utf-8') retorna 'Hello'; espaços entre os bytes são permitidos, um prefixo 0x não. O inverso é s.encode('utf-8').hex(), ou .hex(' ') para saída com espaços. Passe 'gbk' para decodificar ou codificar texto chinês em GBK.
Buffer.from(h, 'hex') Buffer.from(h, 'hex').toString('utf8') decodifica, Buffer.from(s, 'utf8').toString('hex') codifica. Entrada inválida não gera erro: a decodificação para no primeiro par inválido e um dígito ímpar no final é descartado, então valide antes.
TextDecoder / TextEncoder Converta os pares com parseInt(pair, 16) para um Uint8Array e depois chame new TextDecoder('utf-8').decode(bytes). TextDecoder também lê 'gbk', 'big5' e 'shift_jis', mas TextEncoder só produz UTF-8.
HexFormat.of() new String(HexFormat.of().parseHex(h), StandardCharsets.UTF_8) decodifica e HexFormat.of().formatHex(s.getBytes(StandardCharsets.UTF_8)) codifica. Em versões mais antigas, formate cada byte com String.format("%02x", b); evite Integer.toHexString(b), que imprime ffffffe4 para bytes negativos.
encoding/hex hex.DecodeString(h) retorna os bytes e string(b) os transforma em string; hex.EncodeToString([]byte(s)) faz o caminho de volta. É rigoroso: espaços retornam invalid byte: U+0020 ' ' e comprimento ímpar retorna odd length hex string.
sscanf with %2hhx Percorra a string dois dígitos por vez, gravando num buffer de unsigned char, e adicione um '\0' no final. Para imprimir hex, faça cast para unsigned char e use %02X; caso contrário, bytes acima de 0x7F podem sair como FFFFFFE4 onde char tem sinal.
hex2bin() / bin2hex() hex2bin('48656c6c6f') retorna Hello e bin2hex('Hello') retorna 48656c6c6f. O manual documenta que hex2bin() retorna false com um E_WARNING para entrada de comprimento ímpar ou inválida.
xxd -r -p / xxd -p echo 48656c6c6f | xxd -r -p imprime Hello, e printf 'Hello' | xxd -p imprime 48656c6c6f. Use printf em vez de echo ao codificar, porque echo acrescenta uma quebra de linha no final, 0a.
Convert.FromHexString() Encoding.UTF8.GetString(Convert.FromHexString(h)) decodifica e Convert.ToHexString(Encoding.UTF8.GetBytes(s)) codifica (em maiúsculas, sem separadores). FromHexString rejeita espaços e o prefixo 0x. O .NET Core e o .NET 5+ não trazem GBK: chame primeiro Encoding.RegisterProvider(CodePagesEncodingProvider.Instance) e depois Encoding.GetEncoding(936).
48 65 6C 6C 6F 2C 20 E4 B8 96 E7 95 8C
Hello, 世界
Os sete primeiros bytes são ASCII puro: 48 65 6C 6C 6F é Hello, 2C é uma vírgula e 20, um espaço. E4 B8 96 e E7 95 8C são sequências UTF-8 de três bytes para 世 e 界 — a maioria dos caracteres chineses ocupa três bytes em UTF-8. Como todas as sequências são bem formadas, a detecção automática lê o hex como UTF-8.
CE C2 B6 C8 3A 32 35 2E 33 A1 E6
温度:25.3℃
Muitos dispositivos seriais enviam texto chinês em GBK. Aqui CE C2 é 温 e B6 C8 é 度, 3A 32 35 2E 33 é o ASCII :25.3 e A1 E6 é o sinal ℃ de largura total — dois bytes por caractere chinês ou símbolo. Lidos como UTF-8, os bytes são inválidos (CE inicia uma sequência de dois bytes, mas C2 não é um byte de continuação); lidos como GBK, são caracteres comuns, então a detecção automática escolhe GBK. Um conversor que só conhece UTF-8 mostra caracteres de substituição aqui.
00000000: 4869 20e4 bda0 e5a5 bd0d 0a Hi ........
Hi 你好␍␊
É exatamente o que printf 'Hi 你好\r\n' | xxd imprime. O offset 00000000: e a coluna de caracteres à direita são removidos antes da decodificação; se fossem lidos como dados, só os oito zeros já virariam quatro bytes NUL no início. Os dois últimos bytes, 0d 0a, são uma quebra de linha do Windows, mostrada como ␍␊.
[-28, -72, -83, -26, -106, -121]
中文
Arrays.toString(bytes) imprime em decimal os bytes com sinal do Java. Valores negativos são bytes de 0x80 para cima: -28 é 256 − 28 = 228 = 0xE4. Os seis bytes E4 B8 AD E6 96 87 são a codificação UTF-8 de 中文.
AT+CSQ\r\n
41 54 2B 43 53 51 0D 0A
Modems e a maioria dos conjuntos de comandos UART esperam que todo comando termine em retorno de carro mais avanço de linha. Uma caixa de texto só gera 0A para o Enter, então marque Quebras de linha como CR LF e o fim de linha vira 0D 0A.
653462646130653561356264
e4bda0e5a5bd → 你好
Todos os bytes aqui são dígitos hex em ASCII (65 é e, 34 é 4, 62 é b), então a primeira decodificação produz outra string hex. Isso acontece quando uma string hex é tratada como texto e convertida de novo. A página oferece a segunda rodada, que dá 你好. Para evitar alarmes falsos, ela só faz essa oferta quando o primeiro resultado tem pelo menos 12 dígitos hex e o segundo decodifica em texto de verdade — datas, timestamps, valores CRC32 e hashes MD5 não a disparam.
Cole na caixa da aba Hex → Texto no formato que você tiver: com espaços, compacto, valores 0x, escapes \x, um array de bytes ou uma tela inteira do xxd. A linha abaixo da caixa diz como ele foi lido.
O texto aparece à direita, com a codificação detectada automaticamente e o motivo. Se o palpite estiver errado, a tabela abaixo mostra todas as leituras; escolha a certa no menu Codificação.
Bytes de controle como NUL, CR e LF aparecem como ␀ ␍ ␊. Desmarque Mostrar caracteres invisíveis para ver o texto puro e depois copie o resultado.
Na aba Texto → Hex, escolha a codificação e um formato de saída — hex com espaços, valores 0x, um array C, Java, Python ou Go, ou um dump xxd. Marque CR LF para protocolos seriais e de rede.
Texto chinês vindo de softwares antigos do Windows, de muitos dispositivos seriais e de bancos de dados legados está em GBK. Decodificá-lo como UTF-8 ou falha ou enche a saída de caracteres de substituição. Olhe a tabela de codificações e use a leitura que faz sentido.
>>> bytes.fromhex('c4e3bac3').decode('utf-8')
UnicodeDecodeError: 'utf-8' codec can't decode byte 0xc4 in position 0: invalid continuation byte >>> bytes.fromhex('c4e3bac3').decode('gbk')
'你好' charCodeAt() retorna uma unidade de código UTF-16. Para ASCII ela coincide com o byte, então o bug só aparece com outros caracteres, e aí o resultado não é o que nenhum sistema UTF-8 envia.
'你'.charCodeAt(0).toString(16) // '4f60' — a UTF-16 code unit
Buffer.from('你', 'utf8').toString('hex') // 'e4bda0' — the UTF-8 bytes O byte do Java tem sinal, então os bytes de 0x80 para cima são negativos. Integer.toHexString() trabalha com int, imprime valores negativos como hex sem sinal de 32 bits e descarta zeros à esquerda.
Integer.toHexString(b) // "ffffffe4" for 0xE4, "a" for 0x0A
String.format("%02x", b) // "e4", "0a" Buffer.from(hex, 'hex') nunca lança erro. Ele para no primeiro par que não é hex válido e ignora um dígito ímpar no final, então um erro de digitação gera um buffer mais curto em vez de um erro.
Buffer.from('486', 'hex') // <Buffer 48> — the 6 is silently dropped
Buffer.from('48zz65', 'hex') // <Buffer 48> — stops at zz if (!/^([0-9a-f]{2})*$/i.test(hex)) throw new Error('invalid hex');
Buffer.from(hex, 'hex'); Um conversor que só remove espaços lê o offset 00000000: como dados e, onde der, a coluna de caracteres como mais hex. O resultado começa com bytes NUL e desanda a partir daí. Use xxd -p para obter hex puro ou cole o dump aqui, onde as colunas são reconhecidas.
00000000: 4869 20e4 bda0 e5a5 bd0d 0a Hi ........ → read naively: 00 00 00 00 48 69 20 e4 …
$ printf 'Hi 你好\r\n' | xxd -p 486920e4bda0e5a5bd0d0a
Modems AT e muitos protocolos baseados em linhas terminam cada comando com retorno de carro mais avanço de linha. Um comando que termina só em 0A muitas vezes é ignorado sem erro nenhum.
41 54 2B 43 53 51 0A AT+CSQ followed by LF only
41 54 2B 43 53 51 0D 0A AT+CSQ followed by CR LF
0D 0A ou o 00 no final — e faça o caminho inverso para montar um comando, com fim de linha CR LF, que o dispositivo aceite.b'...' e o Node.js como <Buffer ...>. Cole o trecho do log como está para ver o texto, inclusive se era UTF-8 ou GBK.00 a FF, e o número de bytes é sempre metade do número de dígitos. Maiúsculas e minúsculas significam a mesma coisa. Separadores, prefixos e sintaxe de array são só notação: 4865, 48 65, 0x48, 0x65 e \x48\x65 são os mesmos dois bytes.00 a 7F. Os caracteres imprimíveis vão de 20 (espaço) a 7E (~); o resto são caracteres de controle, dos quais 00 (NUL), 09 (tabulação), 0A (avanço de linha), 0D (retorno de carro) e 1B (escape) são os que mais aparecem em dados reais. UTF-8, GBK e ISO-8859-1 mantêm todos esses valores, e é por isso que texto simples em inglês sobrevive a quase qualquer codificação errada.C2–DF para dois bytes, E0–EF para três, F0–F4 para quatro — e cada byte seguinte precisa estar em 80–BF. Essa estrutura rígida explica por que uma frase em GBK quase nunca é UTF-8 válido — no nosso teste com 33.910 frases em chinês, 55 eram — e por que a detecção automática confia numa decodificação UTF-8 limpa. Um único caractere chinês é outra história: cerca de 18% dos caracteres GBK formam, por acaso, uma sequência UTF-8 válida de dois bytes.81 a FE seguido de um byte final de 40 a FE, excluindo 7F. Como a faixa do byte final é muito ampla, um texto UTF-8 curto lido como GBK muitas vezes decodifica sem erro nenhum em caracteres sem relação — E4 BD A0 E5 A5 BD (你好) vira 浣犲ソ —, e é por isso que esta página tenta UTF-8 primeiro. O GB18030 estende o GBK com sequências de quatro bytes para caracteres mais raros; a decodificação aqui as aceita.41 00 — e o UTF-16BE, o mais significativo — 00 41. APIs do Windows e muitos arquivos usam little-endian e podem começar com uma marca de ordem de bytes, FF FE; arquivos UTF-8 às vezes começam com EF BB BF. A detecção automática remove a marca de ordem de bytes e avisa.getBytes(), encode(), a configuração de um terminal serial, o charset de uma conexão com o banco de dados —, defina a codificação explicitamente e anote-a junto do hex, para que o outro lado não precise adivinhar.charCodeAt() do JavaScript ou os valores char do Java, dão unidades de código UTF-16 em vez de bytes codificados. Codifique a string primeiro com TextEncoder, Buffer.from() ou getBytes(StandardCharsets.UTF_8) e só então formate os bytes.%02x ou equivalente, nunca uma conversão de número para hex sem preenchimento. a e 0a parecem iguais num log, mas concatenar valores sem preenchimento produz uma string de comprimento ímpar ou, pior, uma que decodifica em bytes diferentes.00 a FF, então 48656c6c6f são os cinco bytes 48, 65, 6C, 6C, 6F. Segundo, decodifique esses bytes com uma codificação de caracteres. Em ASCII e UTF-8, 48 é H, 65 é e, 6C é l e 6F é o, o que dá Hello. É no segundo passo que os resultados divergem: bytes acima de 7F representam caracteres diferentes em UTF-8, GBK e outras codificações, e é por isso que esta página detecta a codificação e mostra todas as leituras lado a lado. C4 E3 BA C3 é 你好 em GBK, mas UTF-8 inválido, e E4 BD A0 E5 A5 BD é 你好 em UTF-8, mas vira 浣犲ソ quando lido como GBK. Olhe a tabela de codificações abaixo do resultado — a linha que forma um texto com sentido é a codificação em que os dados foram escritos. Com só um ou dois caracteres, a detecção automática nem sempre consegue distinguir: D2 BB é UTF-8 válido (һ) e também GBK (一), então confira a linha GBK que a página mostra abaixo do resultado. Vale descartar outras duas causas: um dígito hex a mais ou a menos, que desloca todos os bytes seguintes em meio byte, e colar um hex dump com a coluna de offsets ainda junto. Se o que você tem já é texto com caracteres estranhos (como 浣犲ソ), e não hex, cole esse texto no conversor de codificação. E4 BD A0 E5 A5 BD de 你好 aparecem como 浣犲ソ. Ou o texto contém bytes de controle como 00 ou 0D 0A, que aparecem como quadradinhos ou quebras de linha. Cole o hex aqui: a tabela de codificações mostra as leituras UTF-8 e GBK lado a lado, e os bytes de controle aparecem como ␀ ␍ ␊. 00 a 7F: letras, dígitos, pontuação e caracteres de controle. O UTF-8 foi construído para que esses mesmos bytes signifiquem exatamente os mesmos caracteres e usa sequências de bytes de 80 para cima para todo o resto — 2 bytes para letras latinas acentuadas, 3 para a maioria dos caracteres chineses, japoneses e coreanos, 4 para emoji. Por isso, para texto simples em inglês, hex para ASCII e hex para UTF-8 dão resultados idênticos. Eles divergem assim que um byte vale 80 ou mais: um conversor só de ASCII não consegue mostrar esses bytes como caracteres, enquanto o UTF-8 os decodifica em toda a faixa do Unicode. Para saber o que cada byte de 00 a 7F representa, consulte a tabela ASCII. E4 BD A0. Em GBK e GB2312, ocupam 2 bytes: 你 é C4 E3. Em UTF-16, os caracteres do Plano Multilíngue Básico ocupam 2 bytes, e a ordem dos bytes importa: 你 é 60 4F em UTF-16LE e 4F 60 em UTF-16BE. Caracteres raros fora desse plano ocupam 4 bytes em UTF-8, 4 em UTF-16 (um par substituto) e 4 em GB18030. Troque a codificação na aba Texto → Hex para ver a contagem de bytes do seu próprio texto. bytes.fromhex() e depois decodifique: bytes.fromhex('48656c6c6f').decode('utf-8') retorna 'Hello'. fromhex aceita espaços entre os bytes, então bytes.fromhex('48 65 6c 6c 6f') também funciona, mas rejeita um prefixo 0x com ValueError. Para dados em GBK, decodifique com 'gbk': bytes.fromhex('c4e3bac3').decode('gbk') retorna '你好', enquanto decodificar os mesmos bytes como UTF-8 lança UnicodeDecodeError. O inverso é '你好'.encode('utf-8').hex(), que retorna 'e4bda0e5a5bd'; passe um separador como em .hex(' ') para obter a saída separada por espaços. Buffer.from('48656c6c6f', 'hex').toString('utf8') retorna 'Hello'. Cuidado com entrada inválida: o Node não lança erro — ele para no primeiro par inválido e descarta em silêncio um dígito ímpar no final, então Buffer.from('486', 'hex') é um buffer de um byte. No navegador, monte os bytes você mesmo e use TextDecoder, que também lê GBK: new TextDecoder('gbk').decode(Uint8Array.from('c4e3bac3'.match(/../g), h => parseInt(h, 16))) retorna '你好'. Não use charCodeAt() para obter bytes: '你'.charCodeAt(0).toString(16) é '4f60', uma unidade de código UTF-16, e não os bytes UTF-8 e4bda0. unsigned char e depois termine a string: for (size_t i = 0; i < n; i++) sscanf(hex + 2 * i, "%2hhx", &buf[i]); buf[n] = '\0';, onde n é strlen(hex) / 2. Com hex valendo 48656c6c6f2c20e4b896e7958c, imprimir buf dá Hello, 世界 em um terminal UTF-8. Para a direção oposta, imprima cada byte com printf("%02X ", (unsigned char)s[i]). O cast importa: em plataformas onde char tem sinal, um byte como 0xE4 seria estendido com sinal e impresso como FFFFFFE4. Em C++, acrescente cada par à string com s.push_back(static_cast<char>(std::stoi(hex.substr(i, 2), nullptr, 16))); o mesmo hex dá Hello, 世界. new String(HexFormat.of().parseHex(hex), StandardCharsets.UTF_8); para dados em GBK, use Charset.forName("GBK") no lugar. No sentido contrário, a surpresa clássica é o ffffffe4, porque o byte do Java tem sinal e Integer.toHexString() recebe um int. O byte 0xE4 é armazenado como -28; ao ser promovido a int, mantém o valor -28, e toHexString imprime números negativos como o valor sem sinal de 32 bits, ffffffe4. O mesmo método também descarta zeros à esquerda, então 0x0A sai como a. Use String.format("%02x", b), que formata um byte negativo como seu valor sem sinal de 8 bits, ou Integer.toHexString(b & 0xff) com preenchimento. No Java 17 e posteriores, HexFormat.of().formatHex(bytes) converte um array inteiro, e HexFormat.of().parseHex(hex) faz o caminho de volta. hex2bin() decodifica uma string hex em uma string binária, e bin2hex() faz o contrário: bin2hex('Hello') retorna 48656c6c6f. Segundo o manual do PHP, hex2bin() retorna false e emite um E_WARNING quando a entrada tem comprimento ímpar ou não é hexadecimal válido, então remova espaços e prefixos 0x antes de chamá-la. Strings do PHP são bytes, então o resultado fica na codificação que o texto original usava — converta a saída GBK com mb_convert_encoding() se a sua página for UTF-8. xxd (incluindo -u, -c e -g), hexdump -C, o hex.Dump do Go, od -A x -t x1 e o od -t x1z do GNU, e expande a linha * que hexdump e od imprimem no lugar de linhas repetidas. Também lida com o hexdump simples e com od -x, que imprimem palavras de 16 bits em vez de bytes: numa máquina little-endian, os bytes 48 69 aparecem como 6948, então a página destroca cada par e usa o último offset para descartar o byte de preenchimento acrescentado a dados de comprimento ímpar. Cada variante de xxd, hexdump e od foi testada com 600 dumps reais de dados aleatórios. a em vez de 0a), um caractere cortado ao copiar ou uma letra intrusa, como O no lugar de 0. Uma string hex gerada ao converter todos os bytes como um único número grande, como hex(int.from_bytes(data, 'big')) do Python, perde o zero do início: \r\n sai como 0xd0a. A página não tenta adivinhar qual dígito está faltando, porque um palpite errado desloca todos os bytes seguintes em meio byte e produz um absurdo convincente. Em vez disso, oferece duas correções de um clique — adicionar um 0 no início ou remover o último dígito — para você comparar os resultados. Valores escritos individualmente com prefixo, como 0x0 0xa, não têm problema: cada um é lido como um byte inteiro. Codificação e Formatação
A tabela ASCII completa: 128 caracteres em decimal, hexadecimal, octal e binário, mais um conversor texto ↔ ASCII. Cada caractere de controle traz seu escape, sua notação caret e onde você o encontra.
Codificação e Formatação
Decodifique e codifique Base64 online gratuitamente. Conversão em tempo real com suporte completo a UTF-8 e emoji. 100% privado — executa no seu navegador. Sem necessidade de cadastro.
Codificação e Formatação
Decodifique uma string Base64 ou data URI de volta para imagem no navegador. Pré-visualize, leia dimensões e MIME, e baixe como PNG, JPG, GIF, SVG. Sem upload.
Codificação e Formatação
Converta CSV para JSON no navegador. RFC 4180, inferência de tipos, cabeçalho, seguro para inteiros grandes. 100% privado, sem upload.
Codificação e Formatação
Cole o texto corrompido e recupere o original. Toda cadeia de codificação plausível — UTF-8, GBK, Big5, Shift_JIS, EUC-KR, Windows-1252 — é testada e ordenada, com a cadeia exata à vista. Grátis, roda no navegador.
Codificação e Formatação
Cole um arquivo .env e obtenha JSON na hora. Suas senhas, chaves de API e tokens nunca saem do navegador — 100% privado, sem upload, analisador dotenv grátis.