O sinal de mais nem sempre é um espaço
A ferramenta URL do Moyoutil converte componentes URI. Usa decodeURIComponent para descodificar, mantendo +. URLSearchParams aplica as regras de application/x-www-form-urlencoded: substitui + na cadeia original por um espaço antes de descodificar os escapes percentuais. Por essa ordem, um sinal de mais representado por %2B permanece +.
Resultado da execução da mesma entrada em dois caminhos
Este é o resultado da execução da função urlComponent do projeto e do JavaScript URLSearchParams em 5 de outubro de 2026. As aspas na tabela são marcas JSON que tornam os espaços visíveis, e não caracteres incluídos no resultado. Na análise de consulta, prefixamos cada entrada com q=.
| Entrada | Descodificação do Moyoutil | URLSearchParams |
|---|---|---|
C++ | "C++" | "C " |
C%2B%2B | "C++" | "C++" |
a+b | "a+b" | "a b" |
a%20b | "a b" | "a b" |
Para preservar os termos de pesquisa, crie consultas com valores originais
Este exemplo apenas cria cadeias de texto; não envia pedidos a um servidor. Ao passar o valor original C++ guide a URLSearchParams, os sinais de mais tornam-se %2B e o espaço torna-se +. encodeURIComponent converte esse espaço em %20. Neste exemplo, ambos os resultados recuperam o valor original ao serem analisados como consulta.
const original = "C++ guide";
const query = new URLSearchParams({ q: original }).toString();
// q=C%2B%2B+guide
const component = encodeURIComponent(original);
// C%2B%2B%20guide
new URLSearchParams(query).get("q");
// C++ guideURL WHATWG: serializar URLSearchParams
A ferramenta URL do Moyoutil não tem campos para montar nomes e valores de consulta nem um modo de descodificação de formulários. Para verificar um valor, codifique C++ guide, descodifique o resultado e compare-o com o original. Não introduza um URL completo no campo de conversão de valores. Verifique as regras exigidas pela API real.
Se você inserir um valor já codificado, o sinal de porcentagem também será convertido.
Passe os valores originais não codificados ao formato de objeto de URLSearchParams. Se passar um valor já codificado com encodeURIComponent, % será novamente codificado como %25. Analisar a consulta abaixo uma vez devolve C%2B%2B, não C++. Verifique as etapas de envio e receção antes de tentar descodificar repetidamente.
const encoded = encodeURIComponent("C++");
// C%2B%2B
const query = new URLSearchParams({ q: encoded }).toString();
// q=C%252B%252B
new URLSearchParams(query).get("q");
// C%2B%2BOrdem de verificação de links problemáticos
- Mantém juntos o termo de pesquisa original e a string de consulta passada. Distinguir entre C++ e C%2B%2B.
- Verifique se o código de recebimento é decodeURIComponent ou um analisador de consulta baseado em formulário. Os resultados da decodificação do Moyoutil por si só não determinam os resultados do servidor.
- Reconstrua a consulta com os valores originais e compare-os com os resultados da análise. Distinguir entre código de exemplo e regras de API reais.
Notação percentual incompleta, como % ou %2, é um erro no Moyoutil. %FF também é um erro porque não é um texto UTF-8 válido. Esta verificação não significa que o tratamento de erros de outros analisadores seja o mesmo, nem é uma função para recuperar automaticamente o texto original.
Perguntas frequentes
Devo usar%20 ou +?
Ao codificar um valor com Moyoutil, um espaço torna-se %20. A serialização de URLSearchParams usa +. Verifique as regras do destinatário e se a conversão de ida e volta devolve o valor original.
Posso substituir todos os sinais de mais originais por espaços?
Não. Isso altera o significado de valores como C++. Aplique as regras de análise de formulários apenas a cadeias recebidas nesse formato; não altere arbitrariamente o texto original não codificado.