Ferramenta autoral
Encoding Checker

Acentos quebrados.Diagnóstico organizado.

Uma ferramenta própria para investigar problemas de codificação em projetos.

Acha e aponta cada acento quebrado do projeto.

App desktopUTF-8Pessoal

  • Tauri 2
  • Rust
  • React 18
  • TypeScript
Ferramenta autoralVarredura
do projeto
Ocorrências
com contexto
Relatórios
de diagnóstico
Encoding Checker

Acentos quebrados.Diagnóstico organizado.

Uma ferramenta própria para investigar problemas de codificação em projetos.

  • Tauri 2
  • Rust
  • React 18
  • TypeScript

Acha e aponta cada acento quebrado do projeto.

App desktopUTF-8Pessoal

  • Tauri 2
  • Rust
  • React 18
  • TypeScript

PortfólioEncoding Checker

O problema

VEÍCULOS virou VE?CULOS.

Um acento quebrado quase nunca é erro de digitação: é o arquivo guardado num padrão de letras e lido em outro. Por fora, a palavra só fica estranha; por dentro, os bytes contam o que aconteceu. Escolha uma situação e toque ou passe o mouse nas letras.

Quatro situações

LetraBytes no arquivo

O que o programa diz

  • OKUTF-8 válido. O Í ocupa dois bytes (C3 8D), como deve.

É o padrão de hoje: cada letra com acento vira dois bytes, e qualquer programa lê igual.

Os bytes são os de verdade de cada padrão; as mensagens seguem as checagens do núcleo em Rust (analyze_file).

Cena do projeto: o programa aberto num notebook, com uma lupa e ícones de código

Do arquivo ao contexto. Veja onde investigar.

Ocorrências por arquivo, linha e coluna para apoiar a manutenção.

Arquivo, linha e colunaContexto da ocorrênciaFiltros por gravidade

Um projeto tem centenas de arquivos, e o acento quebrado pode estar em qualquer um. O programa lê todos e entrega a lista: quais estão bem, quais pedem atenção e, em cada um, a linha, a coluna e o trecho em volta, para ir direto ao lugar.

  • Padrão de letras: windows-1252Fim de linha: CRLF

    1. 12 <label>Ve�culo</label>FFFD_REPLACEMENTLinha 12 · coluna 18
    2. 27 placeholder="Endere�o"FFFD_REPLACEMENTLinha 27 · coluna 23

O relatório sai em três formatos

# HUNT Encoding Checker - Report

**Scan Date:** 2026-10-16 15:42:07

**Path:** D:/Projetos/loja-exemplo

**Total:** 6 files | **Critical:** 3 | **Warning:** 1 | **OK:** 1

---

## src/pages/cadastro.tsx [CRITICAL]

- Encoding: windows-1252
- BOM: No
- Line ending: CRLF

| Line | Type | Context |
|------|------|---------|
| 12 | FFFD_REPLACEMENT |   <label>Ve�culo</label> |
| 27 | FFFD_REPLACEMENT |   placeholder="Endere�o" |

Os arquivos são de exemplo. Os tipos de ocorrência, as gravidades e o formato do relatório são os do código (analyze_file e export_report_md); a mensagem do relatório sai em inglês, como no programa.

A rede de segurança

Antes de mexer, uma cópia.

Corrigir arquivo de projeto dá medo: e se piorar? Por isso o programa exige uma pasta de cópias. Antes de qualquer correção, ele copia os arquivos para uma pasta com data e hora e anota num manifesto de onde veio cada um. Se não gostar, um clique devolve tudo como estava.

Escolha as correções

Cópias guardadas

  1. _manifest.json

    {
      "id": "snapshot-20261014-092611",
      "timestamp": "2026-10-14 09:26:11",
      "files": [
        { "original_path": "D:/Projetos/loja-exemplo/src/pages/cadastro.tsx",
          "backup_name": "D__Projetos_loja-exemplo_src_pages_cadastro.tsx" },
        { "original_path": "D:/Projetos/loja-exemplo/README.md",
          "backup_name": "D__Projetos_loja-exemplo_README.md" }
      ]
    }

Os nomes da pasta e do manifesto são os que o programa grava (create_snapshot); as correções são as de apply_corrections. A pasta de cópias é obrigatória para corrigir.

Cena do projeto: a tela de comparar pastas e duas pastas de vidro lado a lado

Ferramenta desktop

Uma ferramenta própria. Uma rotina mais leve.

Desenvolvimento autoral para apoiar a qualidade dos projetos.

RelatóriosComparação
de encoding
Correções
assistidas

Depois de corrigir, a pergunta é: deu certo? O programa põe a pasta original e a corrigida lado a lado e aponta, arquivo por arquivo, o que mudou no padrão de letras, onde o losango sumiu e o que só existe de um lado.

5 diferenças em 7 arquivos

Pasta originalloja-exemplo/Pasta corrigidaloja-exemplo-corrigida/
src/pages/cadastro.tsxwindows-1252�Padrão mudousrc/pages/cadastro.tsxUTF-8
docs/manual.txtUTF-8�Losango sumiudocs/manual.txtUTF-8
README.mdUTF-8 BOMPadrão mudouREADME.mdUTF-8
src/styles/tema.cssASCIIIgualsrc/styles/tema.cssASCII
src/utils/log.tsUTF-8Igualsrc/utils/log.tsUTF-8
notas-antigas.txtUTF-8Só na original—
—Só na corrigidadocs/changelog.mdUTF-8

A comparação olha o padrão de letras detectado, o caractere de substituição e o tamanho de cada arquivo (compare_directories); não confere o texto linha a linha. As pastas são de exemplo.

O que ele lê

Lê o que é texto, pula o que é peso.

Uma pasta de projeto carrega muita coisa que ninguém escreveu à mão: bibliotecas baixadas, versões montadas, histórico. O programa passa a pasta numa peneira: lê os tipos de arquivo de texto e de código e pula as pastas pesadas que só atrasariam a varredura.

Uma pasta de projetoPulados

  • .ts
  • node_modules
  • .tsx
  • .next
  • .js
  • .git
  • .jsx
  • dist
  • .html
  • build
  • .css
  • .cache
  • .md
  • .vercel
  • .json
  • .turbo
  • .sql
  • coverage
  • .prisma
  • __pycache__
  • .env
  • target
  • .txt
  • .svn
  • .yml
  • .hg
  • .yaml

Lidos

  • 14tipos de arquivo lidos
  • 13pastas puladas pelo nome
  • 12funções do núcleo em Rust

Pastas com nome começando por { também ficam de fora. Antes de ler, o programa conta quantos arquivos vai olhar.

As listas são as do núcleo (SCAN_EXTENSIONS e EXCLUDED_DIRS em main.rs); as funções, as do generate_handler.

As tecnologias

Do que é feito, peça por peça

Um programa de computador que lê projetos byte a byte: a tela é React dentro do Tauri 2, e o núcleo em Rust percorre as pastas, estima o padrão de letras, aponta cada ocorrência e guarda as cópias. Escolha uma peça para ver o que ela faz aqui e em que arquivo está.

14tecnologias, em 3 camadas

Tela

Janela e núcleo

Leitura dos arquivos