Resumo
- A RFC 9839 oferece três repertórios nomeados, do mais amplo ao mais restrito: Unicode Scalars, XML Characters e Unicode Assignables.
- JSON pode ser sintaticamente conforme e ainda carregar controles, surrogate sem par ou não caracteres por escapes; o sucesso do parser não prova conteúdo interoperável.
- O controle operacional é por campo e inclui repertório, escolha entre rejeição e substituição, além de vetores idênticos em todo componente que transforma o valor.
O incidente começa com uma aparência de sucesso. A borda aceitou a requisição, a biblioteca produziu um objeto e a aplicação seguiu adiante. Só na assinatura, no banco ou na exportação surgiu o fato omitido: a string continha uma unidade surrogate isolada que não poderia virar UTF-8 bem formado.
A RFC 9839, Standards Track publicada em agosto de 2025, trata exatamente desse intervalo. O registro, o texto e o XML oferecem três subconjuntos citáveis. Nenhum deles comprova adoção ou conformidade de produto.
Três limites com efeitos diferentes
Unicode Scalars remove os 2.048 pontos surrogate. XML Characters também exclui controles C0 herdados, exceto tabulação, mudança de linha e retorno de carro, além de U+FFFE e U+FFFF. Unicode Assignables elimina surrogates, controles herdados e todos os não caracteres, sem congelar o repertório apenas no que já está atribuído.
O padrão Unicode define o espaço, e o UAX 44 registra propriedades. RFC 3629 especifica UTF-8; RFC 2277 estabelece seu uso nos protocolos. Codificação, porém, responde como representar valores permitidos, não quais valores um campo deve aceitar.
A formulação em ABNF reduz a ambiguidade contratual. A gramática do XML 1.0 é um perfil conhecido, mas não remove todo ponto problemático e não resolve regras de identidade humana.
O escape não altera a autoridade
A RFC 8259 e seu registro descrevem JSON. A RFC 9839 exibe um documento conforme que decodifica para NUL, um controle C1, um surrogate sem par e um não caractere. A gramática aceita a embalagem; o conteúdo não pode ser serializado como UTF-8 válido.
Escrever o valor como escape muda a aparência, não o ponto de código resultante. A verificação pertence depois do decode e antes da persistência autoritativa. O parser genérico não sabe se o campo participa de uma assinatura, identifica um cliente ou apenas será exibido.
I-JSON, Net-Unicode e PRECIS mostram que diferentes superfícies pedem perfis diferentes. Unicode Assignables é um limite de intercâmbio, não uma política completa contra confusáveis, equivalência ou direção de texto.
Rejeição e substituição não são equivalentes
Rejeitar impede que a ambiguidade se torne estado. Substituir por U+FFFD pode preservar uma tela e tornar a falha visível, mas perde a identidade exata. Em assinaturas, hashes, chaves de deduplicação, registros legais ou comparações de permissão, essa perda é material.
Apagar silenciosamente é ainda mais perigoso: strings distintas podem se fundir, e o log deixa de representar o recebido. RFC 9413 ajuda a entender robustez como tratamento explícito do inválido, não como tolerância ilimitada.
A rejeição também precisa ser limitada. Diagnósticos caros podem virar vetor de disponibilidade. Rate limit, quarentena, retenção da amostra bruta e mensagem de erro são escolhas locais do operador.
O teste precisa atravessar a arquitetura
Os mesmos vetores devem passar pelo gateway, parser, validador, fila, driver, banco, log, exportador e consumidor. Quatro métricas ficam separadas: falha de sintaxe, violação de repertório, substituição deliberada e falha tardia de serialização. A evidência compara sequência escalar, decisão, erro e forma armazenada.
O fato de CBOR usar Unicode Scalars em strings de texto exclui surrogates, mas não todos os controles e não caracteres. Migrar o contêiner não conclui a política do campo.
Para riscos humanos, TR36 trata segurança Unicode, TR55 código-fonte, e o W3C explica caracteres, pontos de código, unidades e bytes. A RFC 9839 mantém seu escopo menor e verificável.
Nenhum runtime, produto, banco ou incidente foi testado para este relatório. A conclusão comprovável é estrutural: parser é coordenador de sintaxe, não autoridade de conteúdo. A operação só pode afirmar admissão quando o código executado produz recibos coerentes em todas as fronteiras.
Fontes
Briefing para membros
Contexto aprofundado do perfil
Faça login com o nível de assinatura correto para desbloquear o briefing completo e as notas das fontes.
Apenas para Strategic Circle
Strategic Circle
Aberto a todos os leitores. Desbloqueie Briefings de perfil após se inscrever e fazer login.
Junte-se ao Strategic CircleSomente para Leadership Alliance
Leadership Alliance
Para proprietários e gestores qualificados de ativos de PI; faça login para desbloquear os briefings da Leadership Alliance.
Junte-se ao Leadership Alliance
